From 2f5dfe5a18b4670eb4cea32c1c76295eb70a8865 Mon Sep 17 00:00:00 2001 From: Chet Ramey Date: Mon, 17 Sep 2018 15:10:56 -0400 Subject: [PATCH] bash-5.0-beta release --- ABOUT-NLS | 1868 +++- CHANGES | 129 +- COMPAT | 24 +- CWRU/changelog | 18042 ++++++-------------------------- INSTALL | 4 +- MANIFEST | 15 +- Makefile.in | 11 +- NEWS | 33 + POSIX | 114 +- aclocal.m4 | 2 +- array.c | 143 +- arrayfunc.c | 2 + assoc.c | 110 +- bashhist.c | 29 +- bashline.c | 17 +- braces.c | 10 +- builtins/common.c | 2 +- builtins/complete.def | 74 +- builtins/declare.def | 43 +- builtins/printf.def | 4 + builtins/read.def | 1 + builtins/setattr.def | 23 +- builtins/shopt.def | 6 +- command.h | 2 +- config-top.h | 4 + config.h.in | 6 + configure | 64 +- configure.ac | 46 +- doc/bash.0 | 2509 ++--- doc/bash.1 | 85 +- doc/bash.html | 90 +- doc/bash.info | 778 +- doc/bash.pdf | Bin 373369 -> 375662 bytes doc/bash.ps | 6798 ++++++------ doc/bashref.dvi | Bin 761604 -> 765316 bytes doc/bashref.html | 170 +- doc/bashref.info | 778 +- doc/bashref.pdf | Bin 747913 -> 751241 bytes doc/bashref.ps | 7493 ++++++------- doc/bashref.texi | 87 +- doc/builtins.0 | 1575 +-- doc/builtins.ps | 3372 +++--- doc/rbash.ps | 2 +- doc/version.texi | 6 +- eval.c | 3 + examples/loadables/sleep.c | 7 - execute_cmd.c | 28 +- externs.h | 9 + general.h | 7 + include/shmbutil.h | 17 +- jobs.c | 9 +- jobs.h | 3 +- lib/malloc/malloc.c | 70 +- lib/malloc/mstats.h | 4 + lib/malloc/stats.c | 10 +- lib/readline/display.c | 3 +- lib/readline/doc/hstech.texi | 22 +- lib/readline/doc/hsuser.texi | 18 +- lib/readline/doc/rltech.texi | 6 +- lib/readline/doc/rluser.texi | 44 +- lib/readline/doc/version.texi | 12 +- lib/readline/histexpand.c | 93 +- lib/readline/histfile.c | 4 +- lib/readline/history.h | 2 + lib/readline/kill.c | 8 +- lib/readline/mbutil.c | 62 +- lib/readline/readline.c | 13 +- lib/readline/readline.h | 4 +- lib/readline/rlmbutil.h | 2 + lib/readline/rlprivate.h | 2 + lib/readline/rltty.c | 6 +- lib/readline/text.c | 29 +- lib/readline/vi_mode.c | 242 +- lib/sh/Makefile.in | 11 +- lib/sh/getenv.c | 2 +- lib/sh/mbschr.c | 8 +- lib/sh/mbscmp.c | 6 +- lib/sh/shmbchar.c | 127 +- lib/sh/snprintf.c | 2 + lib/sh/utf8.c | 147 + locale.c | 2 +- nojobs.c | 6 + parse.y | 18 +- parser-built | 2 +- pcomplete.c | 4 +- pcomplete.h | 1 + po/Makefile.in.in | 2 +- po/bash.pot | 282 +- po/de.po | 1351 +-- po/es.po | 2823 +++-- po/ga.po | 1548 ++- po/hr.po | 3452 +++--- po/pt.po | 1914 ++-- po/pt_BR.po | 2568 ++--- po/ru.po | 3455 +++--- po/zh_TW.po | 1451 ++- shell.c | 4 +- sig.c | 1 - subst.c | 158 +- support/Makefile.in | 7 +- support/config.guess | 484 +- support/config.rpath | 373 +- support/config.sub | 1573 ++- support/man2html.c | 2 +- test.c | 8 +- tests/array.right | 120 + tests/array.tests | 1 + tests/array26.sub | 118 + tests/assoc.right | 9 + tests/assoc.tests | 2 + tests/assoc10.sub | 17 + tests/histexp.right | 37 + tests/histexp.tests | 2 + tests/histexp5.sub | 28 + tests/histexp6.sub | 24 + tests/intl.right | 5 +- tests/nameref.right | 43 + tests/nameref20.sub | 71 + tests/nameref21.sub | 56 + tests/nquote1.right | 10 + tests/nquote1.tests | 9 + tests/posixexp.right | 8 +- tests/posixexp.tests | 1 + tests/posixexp5.sub | 2 +- tests/posixexp7.sub | 13 + tests/quote.right | 34 + tests/quote.tests | 1 + tests/quote2.sub | 42 + tests/redir.right | 2 +- tests/redir.tests | 3 + tests/run-varenv | 2 +- tests/shopt.right | 5 +- tests/test-glue-functions | 2 +- tests/unicode3.sub | 5 +- tests/varenv.right | 60 + tests/varenv.tests | 246 + tests/varenv12.sub | 38 + tests/varenv13.sub | 23 + tests/varenv14.sub | 33 + tests/varenv15.in | 3 + tests/varenv15.sub | 38 + variables.c | 340 +- variables.h | 6 +- y.tab.c | 18 +- 144 files changed, 30067 insertions(+), 38512 deletions(-) create mode 100644 lib/sh/utf8.c mode change 100644 => 100755 support/config.guess mode change 100644 => 100755 support/config.sub create mode 100644 tests/array26.sub create mode 100644 tests/assoc10.sub create mode 100644 tests/histexp5.sub create mode 100644 tests/histexp6.sub create mode 100644 tests/nameref20.sub create mode 100644 tests/nameref21.sub create mode 100644 tests/posixexp7.sub create mode 100644 tests/quote2.sub create mode 100644 tests/varenv.tests create mode 100644 tests/varenv13.sub create mode 100644 tests/varenv14.sub create mode 100644 tests/varenv15.in create mode 100644 tests/varenv15.sub diff --git a/ABOUT-NLS b/ABOUT-NLS index 47d5e39f0..3cc828658 100644 --- a/ABOUT-NLS +++ b/ABOUT-NLS @@ -1,592 +1,1348 @@ -Notes on the Free Translation Project -************************************* +1 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 4eb96c0e9..bce097c40 100644 --- a/CHANGES +++ b/CHANGES @@ -1,3 +1,124 @@ +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. @@ -195,11 +316,11 @@ kkk. Fixed a problem with arithmetic expressions containing array references 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 to attempt to +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 - interrrupt read(2). + interrupt read(2). ooo. Fixed some cases where `printf -v' did not return failure status on a variable assignment error. @@ -208,7 +329,7 @@ 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 searhing for the end of a here-document delimiter in a +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. @@ -359,7 +480,7 @@ d. Added support for keyboard timeouts when an ESC character is the last 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 = +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. diff --git a/COMPAT b/COMPAT index aa0019fa7..ce6a791cb 100644 --- a/COMPAT +++ b/COMPAT @@ -396,6 +396,15 @@ above. 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 ========================= @@ -451,15 +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 + ------------------------------------------------------------------------------- diff --git a/CWRU/changelog b/CWRU/changelog index 61e07c0dc..9f00b946e 100644 --- a/CWRU/changelog +++ b/CWRU/changelog @@ -1,15391 +1,4305 @@ - 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 +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 - 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 - -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 + - 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 - +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 -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 + - 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 - 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 +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 + -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 - + 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 - 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 + -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 + 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 -{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 +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 -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 +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 -support/shobj-conf - - add a stanza for nsk on the Tandem from Joachim Schmitz - +arrayfunc.h + - unbind_array_element: updated prototype -{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 - +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 [/] - 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 +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 and followup from + Christian Franke - 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 +variables.c + - all_array_variables: include associative arrays, not just indexed + arrays. Reported by Grisha Levit 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 - and Matthias Klose - -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 - - 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 - - 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 - - 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 - -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 + - 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 + - 3/4 - --- -lib/readline/bind.c - - add a missing free of `names' in rl_function_dumper. Bug report - and fix from Michael Snyder +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 + - 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 +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 + - 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 +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 - 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 , bug report originally - from Oleg Nesterov - - 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 + - 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 - -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 - -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 - -input.c - - rearrange getc_with_restart so that the return values from read() - are handled right - -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 - -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 - -builtins/read.def - - take out setting terminate_immediately; add calls to CHECK_TERMSIG - after read calls +subst.c + - read_comsub: only warn once for null bytes in command substitution + output, instead of once for every null byte -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 +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 -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 +arrayfunc.h + - array_variable_{name,part}: added new argument to prototypes - 3/14 + 9/29 ---- -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 +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 and + Valentin Bajrami -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 +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 - 3/15 - ---- -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 +trap.h + - check_signals: new extern declaration + - trapped_signal_received: new extern declaration - 3/22 - ---- -lib/glob/glob.c - - wdequote_pathname falls back to udequote_pathname if xdupmbstowcs - fails to convert the pathname to a wide-character string +builtins/read.def + - 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 -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 - - 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) +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 - 3/24 + 9/30 ---- -doc/{bash.1,bashref.texi} - - slightly modify BASH_SUBSHELL description based on complaint from - Sam Liddicott +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 - 3/25 + 10/3 ---- -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 +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 - 3/26 + 10/5 ---- -lib/readline/rltypedefs.h - - remove old Function/VFunction/CPFunction/CPPFunction typedefs as - suggested by Tom Tromey - -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 - +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 + - 3/27 + 10/6 ---- -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 - -lib/readline/shell.c - - change sh_set_lines_and_columns to use static buffers instead of - allocating the buffers to pass to setenv/putenv - -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 +array.h + - array_first_index: new convenience define -lib/readline/rlprivate.h - - new external declaration for _rl_sigwinch_resize_terminal() (currently - unused) - -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 +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/29 + 10/7 ---- -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 +array.c + - array_remove: short-circuit if asked to remove index after max + index or before first index -configure.in - - don't check for isinf or isnan; c99 says they're macros anyway + 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 -config.h.in - - remove defines for ISINF_IN_LIBC and ISNAN_IN_LIBC, no longer used - by snprintf.c +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 - 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 + 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 -lib/readline/display.c - - include 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 +subst.c + - process_substitute: if make_child fails, make sure we call + restore_pipeline to undo the previous save_pipeline() -lib/readline/terminal.c - - include 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 + 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 - 4/6 - --- +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 -config-top.h - - change DEFAULT_PATH_VALUE to something more useful and modern +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 - 4/8 - --- -tests/printf2.sub - - make sure LC_ALL and LC_CTYPE are set so LANG assignment takes effect. - Reported by Cedric Arbogast + 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 - 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/19 + ----- +variables.c + - get_bashpid: BASHPID is no longer readonly; assignments to it are + just ignored. -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 +doc/{bash.1,bashref.texi} + - BASHPID: note that assignments are ignored and unsetting BASHPID + causes it to lose its special properties -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 + 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 -pcomplete.h - - new extern declaration for it_helptopics +lib/readline/histfile.c + - chown: protect calls with HAVE_CHOWN. Fixes for MinGW{64,32} from + J. Peter Mugaas -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 +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 - 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 +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 -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 +array.h + - lastref: move last-referenced pointer into each array struct, so all + arrays can have reference locality - 4/13 - ---- -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 `)' +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 - 4/14 - ---- -print_cmd.c - - change overlapping strcpy in named_function_string to memmove +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 -sig.h - - UNBLOCK_SIGNAL: convenience define, same as UNBLOCK_CHILD, just - restores an old signal mask + 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 -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 + 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 - 4/15 - ---- doc/{bash.1,bashref.texi} - - make it clear that enabling monitor mode means that all jobs run in - separate process groups + - EPOCHSECONDS documentation + - EPOCHREALTIME documentation - 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 - +execute_cmd.c + - decpoint: moved to locale.c, renamed locale_decpoint; changed callers - 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 +{bashintl,externs}.h + - locale_decpoint: extern declaration or #define if support for + localeconv() not there - 4/22 - ---- -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 + 10/31 + ----- +lib/malloc/malloc.c + - posix_memalign: add new posix-mandated interface -lib/readline/rlprivate.h - - extern declaration for _rl_disable_meta_key +examples/loadables/rm.c + - rm: minimal loadable builtin, removes files and directories, only + handles -r and -f options. Original from Tim Ruehsen + , heavily rewritten for inclusion as loadable -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." +examples/loadables/Makefile.in + - rm: add rules to build rm as one of the `other' targets - 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 +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) - 4/29 + 11/1 ---- -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 - +variables.c + - BASH_ARGV0: new dynamic variable, returns $0 on reference and sets + $0 on assignment. From a suggestion from Rocky Bernstein + a few years ago - 5/2 - --- doc/{bash.1,bashref.texi} - - add forward reference to `Pattern Matching' from `Pathname - Expansion', suggested by Greg Wooledge - - 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 - -pathexp.c - - quote_string_for_globbing: make sure CTLESC quoting CTLESC is - translated into \ 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 + - BASH_ARGV0: document - 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 + 11/2 + ---- +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 + - 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 - 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 +jobs.c + - discard_last_procsub_child: new function, safely discards + last_procsub_child and sets it to NULL - 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 + - process_substitute: call discard_last_procsub_child instead of + calling discard_pipeline directly. Fixes bug reported by + Christian Weisgerber - 5/11 + 11/3 ---- -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 +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 - 5/12 - ---- -configure.in - - set the prefer_shared and prefer_static variables appropriately - depending on the value of $opt_static_link +examples/loadables/rm.c + - if we see the -i option, return EX_DISKFALLBACK -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 +execute_cmd.c + - execute_simple_command: if executing a builtin returns EX_DISKFALLBACK, + try running execute_disk_command instead - 5/13 - ---- -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 +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 based on an old bug-bash + discussion -builtins/help.def - - help_builtin: change strncmp to strcmp so that `help read' no longer - matches `readonly'. Suggested by Clark Wang - -config.h.in - - add define for GLIBC21, checked using jm_GLIBC21 as part of the tests - for libintl - -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 - -aclocal.m4 - - BASH_STRUCT_WEXITSTATUS_OFFSET: change AC_RUN_IFELSE to AC_TRY_RUN - to avoid warning about not using AC_LANG_SOURCE +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 - 5/14 + 11/4 ---- -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 +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 - 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 - +lib/readline/rlprivate.h + - _rl_peek_macro_key: extern declaration - 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/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 -lib/readline/{complete,display,mbutil}.c - - use WCWIDTH instead of wcwidth +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 - 5/17 + 11/5 ---- -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 - +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 -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 +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 -lib/readline/rlprivate.h - - extern declaration for _rl_utf8locale +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 -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 + 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 -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 +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 -config.h.in - - WCWIDTH_BROKEN: new define +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 -lib/readline/rlmbutil.h - - change WCWIDTH macro to use _rl_utf8locale and the full range of - Unicode combining characters (U+0300-U+036F) +subst.c + - 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/19 - ---- -lib/readline/rlprivate.h - - _rl_search_context: new member, prevc, will hold character read - prior to lastc +test.c + - unary_test: make sure if we test -v array[@] or array[*] that we + free the return value from array_value -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 - - - 5/20 + 11/8 ---- 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 - - 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 - - -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 + - 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 -lib/readline/doc/{rluser.texi,readline.3} - - document history-substring-search-forward and - history-substring-search-backward +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 + + - optimize_subshell_command: ditto - 5/27 + 11/9 ---- -{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 - +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 -config-top.h - - DONT_REPORT_SIGTERM: new user-modifiable setting. Commented out - by default +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 + - 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 - 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. + 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 - 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 - +lib/malloc/malloc.c + - malloc_usable_size: return the maximum number of bytes available for + a particular memory allocation (size of block allocated for it) - 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 + 11/12 + ----- +configure.ac + - changes to make --enable-profiling work on Linux (-pg, no static link, + no -static in LDFLAGS) -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 +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) - This fixes problems with double-expansion and quote removal being - performed on the array indices +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) - 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. +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/display.c + - rl_redisplay: handle report of potential integer overflow in + horizontal display mode from Mateusz Lenik - 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 - +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 - 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 +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) -doc/{bash.1,bashref.texi} - - checkwinsize: remove language saying that only interactive shells - check the window size after each command +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/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 + 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 -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 +lib/readiline/rlprivate.h + - _rl_init_locale: new extern declaration -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 +lib/readline/readline.c + - rl_initialize: if not initializing everything the first time, call + _rl_init_locale to check current locale and set _rl_utf8locale -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 +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 -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 +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 - - {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 +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 -include/shmbutil.h - - use locale_mb_cur_max instead of MB_CUR_MAX in ADVANCE_CHAR and - similar macros + 11/17 + ----- +lib/readline/histlib.h + - PATTERN_SEARCH: new flag for history search interfaces, means to + search for a pattern as Posix specifies -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 - - - 6/30 - ---- -execute_cmd.c - - execute_pipeline: make sure the lastpipe code is protected by - #ifdef JOB_CONTROL. Fixes problem reported by Thomas Cort - +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 - 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 and the GDB development - team +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) -lib/readline/signals.c - - rl_signal_handler: if we're in callback mode, don't interrupt - immediately on a SIGWINCH +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 - 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 + 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 - 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 +config.h.in + - define HAVE_FNMATCH if we have the fnmatch function (configure was + already checking for it) - 7/7 - --- -doc/{bash.1,bashref.texi} - - document new `globasciiranges' shopt option +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 - 7/8 - --- + 11/19 + ----- 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 + - shopt_enable_hostname_completion: only declare this if READLINE + defined, since that's the only time it's used. Reported by + isabella parakiss - 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 - - _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 + 11/20 + ----- +builtins/common.c + - display_signal_list: make `kill -l 0' print `EXIT', modifying change + from 9/17 -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 + 11/21 + ----- +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 <\> and + skip to the end of string processing. Fixes oob-read error + reported by Jerzy Kramarz -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 - +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 + + - ANDOR: check s[1] before checking s[2] in case s[1] == end of string. + Fixes oob-read error reported by Jerzy Kramarz -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 +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 -doc/{bash.1,bashref.texi} - - document new Posix-mode behavior of `command' when preceding builtins - that take assignment statements as arguments + 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 + -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 +bashhist.h + - HISTEXPAND_DEFAULT: default value of history_expansion, moved here + from flags.c - 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 - +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 -builtins/printf.def - - getint: if garglist == 0, return whatever getintmax returns (0). - Fixes bug reported by Ralph Coredroy +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 - 7/28 - ---- -doc/{bash.1,bashref.texi} - - minor changes to the descriptions of the cd and pushd builtins +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 -lib/sh/zread.c - - zsyncfd: change variable holding return value from lseek to - off_t. Bug report and fix from Gregory Margo + 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 - 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 + 11/25 + ----- +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 - 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 - + 11/27 + ----- +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 - 8/9 - --- -builtins/common.c - - get_exitstat: return EX_BADUSAGE (2) on a non-numeric argument + 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 -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 . - Reverses change from 9/11/2008 (see above) +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 - 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 + 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 + - 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 - -- 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 +lib/readline/doc/rluser.texi + - history-substring-search-forward: was misspelled as "substr-search"; + ditto for search-backward -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 +doc/bash.1 + - history-substring-search-{backward,forward}: add documentation, text + straight from readline.3 -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 +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 - 8/30 + 12/1 ---- -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 - - - 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 +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 -bashline.c,braces.c,parse.y,builtins/printf.def - - change callers of sh_backslash_quote to add second argument +tests/run-all + - unset SHELLOPTS to avoid its options `polluting' the test + environment. Suggestion from Vladimir Marek + -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 +tests/execscript + - use $PWD/exec8.sub to protect against someone who has a cd command + in his bashrc. Report from Vladimir Marek + - 9/10 + 12/2 ---- -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 +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 - 9/15 + 12/3 ---- -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 - - 9/19 - ---- -expr.c - - exppower: replace the simple exponentiation algorithm with an - implementation of exponentiation by squaring. Inspired by report - from Nicolas ARGYROU +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> -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 - -doc/{bash.1,bashref.texi},lib/readline/doc/{hsuser,rluser}.texi - - minor editorial changes inspired by suggestions from - Roger Zauner +subst.c + - parameter_brace_expand_indir: clean up checks for unset variables to + minimize incompatibilities with previous versions - 9/20 + 12/5 ---- -lib/intl/localealias.c - - read_alias_file: close resource leak (fp) when returning on error +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 - 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 +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 - 9/25 - ---- -doc/{bash.1,bashref.texi} - - formatting and some content changes from Benno Schulenberg - - - document new posix-mode behavior from interp 383 change of 9/22 +Makefile.in + - bashbug: use `^' as the sed delimiter instead of `%'; some compilers + use `%' in CFLAGS. Report from Vladimir Marek + - 9/30 + 12/6 ---- -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 +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 - 10/1 + 12/7 ---- -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 - - - 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 +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 -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 + 12/12 + ----- +lib/sh/shquote.c + - sh_backslash_quote: if FLAGS&2, backslash-quote other single-byte + characters that are in the current locale's character class -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. +builtins/printf.def + - printf_builtin: when processing the `%q' format, make sure to + backslash quote all 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 + -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 and Patrick Pfeifer - - - 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 +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 -lib/readline/readline.h - - new extern declaration for rl_filename_stat_hook +config.h.in + - DEV_FD_STAT_BROKEN: add define -lib/readline/doc/rltech.texi - - rl_directory_rewrite_hook: now documented - - rl_filename_stat_hook: document +configure.ac + - --enable-dev-fd-stat-broken: new command-line option, defines + DEV_FD_STAT_BROKEN if supplied at configure time -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 - -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 +doc/bashref.texi + - --enable-dev-fd-stat-broken: document new command-line option for + configure - 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 - has a novel use for that code in conjunction with a pre-loaded - shared library that traces system call usage in shell scripts +arrayfunc.c + - assoc_expand_once: new variable, declared here just because - 10/10 - ----- -Makefile.in - - Fix from Mike Frysinger 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 to avoid subdirectory - builds each trying to make version.h (and all its dependencies) +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 -lib/sh/Makefile.in - - remove some dependencies on version.h where it doesn't make sense +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) -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 +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 - 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 - +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) - 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 +externs.h + - EXP_EXPANDED, new flag for second argument to evalexp - 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 - - 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 +builtins/let.def + - let_builtin: add EXP_EXPANDED to flags passed to evalexp -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 +execute_cmd.c + - 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 - 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 - - 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 + - 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 -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 +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] - 10/29 + 12/14 ----- -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 - - 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 - - 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 +subst.h + - ASS_NOEXPAND: assignment flag that inhibits expansion of associative + array subscripts -builtins/read.def - - read_builtin: don't call bind_read_variable with a potentially-null - string +variables.c + - 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 -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 +variables.h + - bind_int_variable: updated extern declaration with new flags arg -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 +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 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 + - 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 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 + - param_expand: call evalexp with EXP_EXPANDED flag for arithmetic + substitution because the string has already been expanded with + expand_arith_string -builtins/complete.def - - compgen_builtin: fix memory leak by calling strlist_dispose (sl) - before overwriting sl with return value from completions_to_stringlist + 12/15 + ----- +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 -builtins/hash.def - - list_hashed_filename_targets: fix memory leak by freeing `target' +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 -make_cmd.c - - make_arith_for_command: free `init', `test', and `step' before - returning error on parse error +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 -jobs.c - - initialize_job_control: don't call move_to_high_fd if shell_tty == -1 + 12/16 + ----- +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 -general.c - - check_dev_tty: don't call close with an fd < 0 - - legal_number: deal with NULL `string' argument, return invalid +doc/bash.1,lib/readline/doc/hsuser.texi + - documented new behavior of negative offsets for `history -d' -lib/sh/fmtulong.c - - fmtulong: if the `base' argument is invalid, make sure we index - buf by `len-1' at maximum + 12/17 + ----- +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 -print_cmd.c - - print_deferred_heredocs: don't try to dereference a NULL `cstring' - - cprintf: make sure to call va_end (args) + 12/19 + ----- +configure.ac + - linux: make sure PGRP_PIPE is defined unconditionally for all kernel + versions greater than 2.3.* -variables.c - - push_dollar_vars: fix call to xrealloc to use sizeof (WORD_LIST *) - instead of sizeof (WORD_LIST **) +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 -lib/sh/zmapfd.c - - zmapfd: if read returns error, free result and return -1 immediately - instead of trying to reallocate it +lib/readline/history.h + - remove_history_range: extern declaration - 11/6 - ---- + 12/20 + ----- 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 + - eval_arith_for_expr: pass EXP_EXPANDED to evalexp, since we run the + expression through expand_words_no_vars - 11/12 + 12/21 ----- -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 - - -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 and the GDB development - team +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 -pcomplete.h - - COPT_NOQUOTE: new complete/compgen option value + 12/22 + ----- +arrayfunc.[ch],subst.c + - array_expand_index: added new FLAGS argument, reserved for future use, + changed callers -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) + 12/24 + ----- +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 -doc/bash.1,lib/readline/doc/rluser.texi - - document new -o noquote option to complete/compgen/compopt + 12/27 + ----- +builtins/help.def + - help_builtin: don't pass return value from ngettext() directly to + printf -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 - + 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 back in 10/2016 -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 + 12/30 + ----- +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 -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 +command.h + - subshell_com: now has a line number member: line -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 +make_cmd.c + - make_subshell_command: assign current line number (line number of the + ending right paren) to `line' member - 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 +copy_cmd.c + - copy_subshell_command: copy the `line' member + +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 + - 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 + - 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 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 + - bind_variable_internal: move can_optimize_assignment call to the + right place - 11/23 + 12/31 ----- -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 +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 -builtins/read.def - - skip over NUL bytes in input, as most modern shells seem to. Bug - report by Matthew Story + 1/2/2017 + -------- +{expr,general,hashcmd}.c + - include flags.h for flag values -lib/readline/vi_mode.c - - rl_vi_replace: set _rl_vi_last_key_before_insert to invoking key +make_cmd.c + - include shell.h instead of the files it includes - 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 - +flags.h + - new extern declarations for want_pending_command, read_from_stdin -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 - 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 +subst.h + - add extern declaration for expanding_redir, assigning_in_environment -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 - - 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 - - - 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 +trap.h + - add extern declaration for running_trap -lib/readline/util.c - - rl_settracefp: new utility function to set the tracing FILE * +execute_cmd.h + - added extern declarations for variables declared in execute_cmd.c, + changed files that declare lots of extern variables -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) +shell.h + - added extern declarations for variables declared in shell.c, + changed files that declare lots of extern variables -lib/readline/rlprivate.h - - extern declarations for _rl_sigcleanup and _rl_sigcleanarg +parser.h + - added extern declarations for variables declared in parse.y, + changed files that declare lots of extern variables -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 - - rl_complete_internal: in default switch case, call _rl_free_match_list - before returning to avoid memory leak +[lots of changes to reduce the number of extern declarations in C and DEF files] -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 +parse.y + - xparse_dolparen: need ALIAS or DPAREN_ARITHMETIC to be defined to + use STRING_SAVER - 12/1 - ---- -lib/glob/gmisc.c - - extglob_pattern: new function, returns 1 if pattern passed as an - argument looks like an extended globbing pattern + 1/3 + --- +sig.c + - 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 -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 - +jobs.c + - end_job_control: only attempt to give the terminal back to + original_pgrp if job_control != 0; don't test interactive_shell - 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 +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 + 1/16 + ---- 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 - - 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 + - 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 -execute_cmd.c - - execute_cond_node: added parens to patmatch assignment statement to - make intent clearer +lib/glob/glob_loop.c + - CHAR -> GCHAR (unsigned char); change uses of CHAR to GCHAR - 12/3 - ---- -configure.in,config.h.in - - check for imaxdiv, define HAVE_IMAXDIV if present +lib/glob/glob.c + - wchkname -> wskipname + - wskipname: now takes a third `flags' argument, like the other variants + of skipname -expr.c - - expassign, exp2: use imaxdiv if available. Doesn't help with checks - for overflow from 10/25 + 1/17 + ---- +redir.c + - 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 - 12/6 + 1/18 ---- -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 - +{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 - 12/7 + 1/19 ---- -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) +lib/readline/complete.c + - stat_char: fix small memory leak if stat/lstat returns -1 -doc/{bash.1,bashref.texi} - - note that additional arguments to cd following the directory name - are ignored. Suggested by Vaclav Hanzl +bashline.c + - 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 - 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 +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 -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) + 1/23 + ---- +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 -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/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 -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 +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 -lib/readline/rlprivate.h - - new extern declaration for _rl_executing_keyseq_size, buffer size - for rl_executing_keyseq + 1/30 + ---- +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 + - parse_matched_pair: do the same thing with LEX_WASDOL -lib/readline/doc/rltech.texi - - documented new variables: rl_executing_key, rl_executing_keyseq, - rl_key_sequence_length + 2/1 + --- +jobs.h + - JWAIT_PERROR,JWAIT_FORCE: new defines for the wait_for_ family of + functions - 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 - +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 - 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 +builtins/wait.def + - takes a new `-f' option, signifying to wait until the specified job + or process terminates, instead of changes state -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 +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 -expr.c - - more minor changes to cases of INTMAX_MIN % -1 and INTMAX_MIN / 1; - fix typos and logic errors + 2/2 + --- +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 + - 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 - - 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 - - -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 - - 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. + 2/3 + --- 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 + - 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 -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) +lib/readline/readline.h + - rl_{next,previous}_screen_line: extern declarations -doc/{bash.1,bashref.texi} - - document new `bind -X' option +lib/readline/funmap.c + - {next,previous}-screen-line: new bindable command names - 12/24 - ----- +lib/readline/doc/{rluser.texi,readline.3} + - {next,previous}-screen-line: document behavior, including limitations -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 - + 2/5 + --- +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 + - 12/28 - ----- + 2/6 + --- 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 + - --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 -builtins/{cd,set}.def,doc/{bash.1,bashref.texi} - - added text clarifying the descriptions of cd -L and -P, suggested by - Padraig Brady - - slight change to the description of `set -P' about resolving symbolic - links +eval.c + - pretty_print_loop: new function, similar to reader_loop, reads + commands and prints them by displaying the result from + make_command_string() -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 +externs.h + - pretty_print_loop: new extern declaration - 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 + 2/9 + --- +doc/{bash.1,bashref.texi} + - here strings: correct documentation to note they do not undergo + brace expansion. Report from Conor McCarthy - 1/5 + 2/9 --- -quit.h - - LASTSIG(): new macro, expands to signal number of last terminating - signal received (terminating_signal or SIGINT) +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 -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 + 2/11 + ---- +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 -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 +parse.y + - parse_comsub: if we are parsing a here document with a quoted + delimiter (LEX_QUOTEDDOC), we should not remove + 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 , patch was originally + contributed by Geir Hauge - 1/11 + 2/15 ---- -doc/{bash.1,bashref.texi} - - slight changes to the descriptions of the compat32 and compat40 shell - options to clarify their meaning +jobs.c + - 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 - 1/12 + 2/17 ---- -lib/readline/{colors.[ch],parse-colors.[ch]} - - new files, part of color infrastructure support +subst.c + - 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 + -Makefile.in,lib/readline/Makefile.in - - arrange to have colors.o and parse-colors.o added to readline - library +config-top.h + - STATIC_PATH_VALUE: new config variable, undefined by default -{configure,config.h}.in - - check for stdbool.h, define HAVE_STDBOOL_H if found +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 - 1/14 + 2/18 ---- -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 - - -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 +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 -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 +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 - 1/17 + 2/19 ---- -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 +subst.c + - 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 - 1/18 + 2/20 ---- +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} -{configure,config.h}.in - - new check: check for AUDIT_USER_TTY defined in , - 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 +jobs.c + - 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 -lib/readline/util.c - - _rl_audit_tty: new function, send a string to the kernel tty audit - system + 2/21 + ---- +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 -lib/readline/rlprivate.h - - _rl_audit_tty: new extern declaration +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 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 + - 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 - 1/21 + 2/22 ---- +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 -lib/readline/readline.c: - - _rl_dispatch_subseq: add an inter-character timeout for multi-char - key sequences. Suggested by . 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 +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 -trap.c - - use BLOCK_SIGNAL/UNBLOCK_SIGNAL instead of code dependent on - HAVE_POSIX_SIGNALS and BSD signals +execute_cmd.c + - 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 - 1/24 + 2/23 ---- +general.c + - make_absolute: convert deprecated cygwin_conv_to_full_posix_path + to cygwin_conv_path (CCP_WIN_A_TO_POSIX, ...) -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 - +{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 - 1/29 + 2/24 ---- -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 - +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 -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 + 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 + - bind_comp_words: if COMP_WORDS exists as a nameref variable, ignore + the nameref attribute. Report from Grisha Levit + - 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 +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 , because otherwise + *contains_dollar_at gets set to 1 and the word is inappropriately + split - 2/4 + 3/1 --- -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 +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) -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 + 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 -doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} - - keyseq-timeout: documented +lib/glob/smatch.c + - is_cclass: broke into two functions: is_valid_cclass and cclass_test, + for future expansion. No functionality change -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 - - _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 - +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 - 2/5 + 3/4 --- -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 - -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 +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 -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 + 3/7 --- -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 - - -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 +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) -variable.h,subst.c - - make_local_array_variable: changed prototype and caller + 3/10 + ---- +lib/readline/readline.c + - bind_arrow_keys_internal: add default key bindings for control- + arrow keys, suggested by Per Bothner -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. + 3/13 + ---- +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 + - 2/14 + 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 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 + - 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 - 2/15 + 3/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 +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 -builtins/common.c - - get_job_by_name: call internal_error instead of report_error so this - doesn't exit the shell +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 - 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 - +execute_cmd.h + - undo_partial_redirects: extern declaration + - dispose_partial_redirects: extern declaration -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 +subst.c + - 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 - 2/19 +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 + + + 3/16 ---- -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 +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 -builtins/printf.def - - tescape: ditto for printf \u and \U escape sequences +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 - 2/20 + 3/18 ---- -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 - - 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) +subst.c + - extract_dollar_brace_string: handle process substitution embedded in + a ${...} expansion in the same way as command substitution. Reported + by D630 -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 +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 - 2/21 + 3/21 ---- -doc/{bash,builtins}.1 - - minor changes from Bjarni Ingi Gislason - -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 +subst.h + - ASS_NOEVAL, ASS_NOLONGJMP: new values for assignments, used by + make_variable_value -lib/readline/parens.c - - _rl_enable_paren_matching: make paren matching work in vi insert - mode. Bug report from +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 - 2/22 - ---- -lib/sh/shquote.c - - sh_backslash_quote: quote tilde in places where it would be - expanded. From a report from John Kearney +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 - 2/23 + 3/22 ---- -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 +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 + - 2/25 + 3/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 - - u32toutf16: function to convert unsigned 32-bit value (unicode) to - UTF-16. From John Kearney - - 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 - - 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 +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 + - 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 +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 + 3/28 + ---- 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. + - 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 - 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 + 3/30 + ---- +subst.c + - 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 - 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/31 + ---- +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 - 3/7 + 4/1 --- -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 - 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 - - - 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 - -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 - - -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 +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 + - 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 + - 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 - 3/16 - ---- array.c - - array_insert: fix memory leak by deleting element to be added in the - case of an error + - 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 - 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 +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 - 3/19 - ---- -stringlib.c - - substring: use memcpy instead of strncpy, since we know the length - and are going to add our own NUL terminator + 4/4 + --- +doc/{bash.1,bashref.texi} + - read: document that a delim argument of '' terminates each line when + a NUL character appears - 3/20 - ---- + 4/5 + --- 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 - -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 + - 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 - 3/21 - ---- -config-top.h - - OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT: define to 1 to optimize - sequential indexed array assignment patterns. Defined to 1 by - default + 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 + - 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 + - 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 -array.c - - array_insert: if OPTIMIZE_SEQUENTIAL_ARRAY_ASSIGNMENT is defined, - start the search at lastref (see change from 3/15) + 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 - 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 +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 - 4/1 - --- -command.h - - W_ASSNGLOBAL: new flag, set to indicate declare -g +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 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 + - 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 + + 4/9 + --- 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 + - 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 - 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 - ; this prompted by report from Barry Downes - +variables.c + - 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 + -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 +subst.[ch] + - quote_escapes,dequote_escapes: now take const char * argument -externs.h - - sh_mbsnlen: extern declaration for new function +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 -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 + 4/11 + ---- +eval.c + - reader_loop: make sure PS0 is expanded and displayed before + incrementing the command number -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 - +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 + + - 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 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 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 - - 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 - - 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 +support/Makefile.in + - clean: remove man2html.o as part of this production instead of + waiting until `distclean'. Reported by chrlis - 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) +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 + . This undoes change to @Q from 4/7, so + list_transform change reverted 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" +builtins.h + - added BUILTINS_H include guard - 4/20 - ---- -lib/sh/strftime.c - - incoporated new version from Aharon Robbins +examples/loadables/Makefile.in + - install loadables.h as sample include file, along with Makefile.inc - 4/22 + 4/23 ---- -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 , - fix from Andreas Schwab - 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 + - maybe_make_readline_line: don't try to do anything if the passed + NEW_LINE is NULL. Report from Jaren Stangret , + fix from Eduardo Bustamante - 4/25 + 4/24 ---- -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 - - 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 - - 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 - -arrayfunc.h - - make_array_variable_value: new extern declaration +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 - 5/19 + 4/25 ---- -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 +doc/{bash.1,bashref.texi} + - cmdhist: clarify that this option only has an effect if history is + enabled. Suggested by Matthew Braun - 5/24 + 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 -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 + 4/27 ---- -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 +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 + -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 +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 + - 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 - 5/27 + 4/28 ---- -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 and - supplemented by Dan Douglas - -doc/{bash.1,bashref.texi} - - changes to the description of substring expansion inspired by - suggestions from Bill Gradwohl - -doc/bashref.texi - - added substring expansion examples inspired by suggestions from - Bill Gradwohl - -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 +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/1 + 5/2 --- -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 +lib/readline/bind.c + - rl_translate_keyseq: make sure a trailing backslash in the key + sequence is preserved. Report from Eduardo Bustamante + - 6/4 + 5/3 --- -lib/sh/mktime.c - - current versions of VMS do not need to include . Fix from - John E. Malmberg +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 - 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 - +jobs.c + - waitchld: modify change of 4/26 to run SIGCHLD traps even if job + control is not enabled - 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 - - - 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 +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 + + - rl_get_{next,previous}_history: if there is no history list, don't + bother doing anything - 6/6 + 5/4 --- -braces.c - - mkseq: try and be smarter about not overallocating elements in - the return array if the increment is not 1 or -1 +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 + , happens only in cases where we don't longjmp on + a fatal expansion error - 6/7 + 5/5 --- 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" + - 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 - 6/8 +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 + + +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 + + 5/6 --- -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 +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 + -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 + 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 -externs.h - - sh_backslash_quote: declaration now takes a third argument +lib/readline/input.c + - MinGW: include before . Fix from Eli Zaretskii + -builtins/printf.def - - printf_builtin: call sh_backslash_quote with 1 as third argument - so tildes get escaped +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 -{bashline,bracecomp}.c - - call sh_backslash_quote with 0 as third argument so tildes are not - escaped in completed words + 5/9 + --- +parse.y + - 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 -doc/bash.1 - - add `coproc' to the list of reserved words. From a report by - Jens Schweikhardt + 5/10 + ---- +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/10 + 5/12 ---- -execute_cmd.c - - line_number_for_err_trap: now global, so parse_and_execute can save - and restore it with unwind-protect +lib/readline/rlmbutil.h + - wchar_t: make sure this is defined as int if multibyte characters + aren't supported -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/.) +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 - 6/15 + 5/14 ---- -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 - +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 - 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 +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 - 6/21 + 5/15 ---- - 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 + - 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 + + - 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/22 + 5/16 ---- -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 +bashline.c + - 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 -jobs.h - - job_control: extern declaration no longer dependent on JOB_CONTROL +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 -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 +examples/bash-completion/ + - new place to include a current or recent version of the + bash-completion package - 6/23 + 5/19 ---- -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 - , fix from Andreas Schwab - - 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 +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 - 6/25 + 5/24 ---- -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 +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 - 6/26 + 5/25 ---- -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 +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 -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? +builtins/shopt.def + - localvar_inherit: new option -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 +doc/{bash.1,bashref.texi} + - localvar_inherit: document new shopt option - 6/27 + 5/29 ---- -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) +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 - 6/30 - ---- -variables.h - - additional defines for the new `nameref' variable attribute - (att_nameref): nameref_p, nameref_cell, var_setref +lib/readline/histfile.c + - read_history_range: if the file isn't a regular file, return an + error. Bug report from Eduardo Bustamante , + relaying from IRC -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) + 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 + -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] + 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 , relaying from IRC -execute_cmd.c - - execute_for_command: changes to implement ksh93 semantics when index - variable is a nameref + 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 -builtins/setattr.def - - show_var_attributes: change to add `n' to flags list if att_nameref - is set +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/set.def - - unset_builtin: changes to error messages to follow nameref variables +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 -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 + 6/4 --- -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 +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 -variables.h - - unbind_nameref: extern declaration + 6/7 + --- +lib/readline/histlib.h + - strchr: only declare if __STDC__ is not defined, since we already + include . Report from Chi-Hsuan Yen -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 + 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 -doc/{bash.1,bashref.texi} - - document namerefs and typeset/declare/local/unset -n +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/13 + 6/12 ---- -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 , fix from - Andreas Schwab - - 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 +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 -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() + 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. -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 + 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 -lib/readline/rltty.c - - prepare_terminal_settings: don't mess with IXOFF setting if - USE_XON_XOFF defined +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 -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 +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 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 - - 7/24 - ---- -configure.in - - interix: define RECYCLES_PIDS. Based on a report from Michael - Haubenwallner + - 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. - 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 - +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. -support/shobj-conf - - Mac OS X: drop MACOSX_DEPLOYMENT_TARGET=10.3 from the LDFLAGS. We - can finally kill Panther +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/28 + 6/16 ---- -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 +parse.y + - xparse_dolparen: short-circuit immediately if passed a empty string -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 - +lib/readline/display.c + - update_line: when wrapping multibyte characters, make sure we deal + with WCWIDTH returning -1. Fixes a fuzzing bug - 7/29 + 6/17 ---- -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 - -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 - - -{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 dependent on HAVE_SYS_PARAM_H - consistently + - 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 + - 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 + - 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/display.c + - update_line: make sure all references to `wrapped_line' are wrapped + with #ifdef HANDLE_MULTIBYTE. Report and fix from Eduardo Bustamante + -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/vi_mode.c + - _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 -lib/readline/rlprivate.h - - _rl_prev_macro_key: extern declaration +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 +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/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 +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 - 8/13 + 6/19 ---- -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 +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 -builtins/common.h - - extern declaration for evalstring() +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 + -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 - +general.c + - line_isblank: new function: returns true if passed string is composed + entirely of blanks -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 +general.h + - line_isblank: new extern declaration -builtins/mapfile.def - - run_callback: call evalstring instead of parse_and_execute +parse.y + - history_delimiting_chars: return "" for a blank line, since there's + nothing to delimit with `;' - 8/15 + 6/21 ---- -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. +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 -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 +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 - 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 +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 + - 8/19 + 6/23 ---- -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 +doc/{bash.1,bashref.texi} + - add text noting that $* and ${array[*]} (unquoted) can also expand + to multiple words - 8/20 + 6/29 ---- -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 +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 - 8/21 - ---- -command.h - - W_NOBRACE: new word flag that means to inhibit brace expansion +execute_cmd.c + - select_query: use default_columns() instead of fetching value of + COLUMNS directly -subst.c - - brace_expand_word_list: suppress brace expansion for words with - W_NOBRACE flag +builtins/help.def + - show_builtin_command_help: use default_columns() instead of fetching + value of COLUMNS directly - 8/22 + 6/30 ---- 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 + - 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 -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 + 7/4 + --- +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 + back on 2/28/2017 - 8/23 - ---- -jobs.c - - remove references to first_pid and pid_wrap, since we're not using - them for anything anymore +bashline.c + - operate_and_get_next: if given an explicit argument, use that to + choose which line in the history to use. - 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 - -doc/bashref.texi - - some small formatting changes from Karl Berry - - 8/27 - ---- -lib/readline/doc/{history,rlman,rluserman}.texi - - some small formatting changes from Karl Berry - -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 - and Chris F. A. Johnson - -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 - -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} - -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 and most recently by Jordan Michael - Ziegler +lib/readline/doc/rluser.texi,doc/bash.1 + - operate-and-get-next: document new effect of explicit numeric arg -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - document new show-mode-in-prompt variable, off by default +lib/readline/complete.c + - fnprint: make sure print_len is initialized before using it on + systems without multibyte character support. Report and fix from + Juan Manuel Guerrero - 9/3 + 7/6 --- +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 -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 + 7/7 --- -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 - +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 . 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 - 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 +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 - 9/9 + 7/8 --- -lib/readline/complete.c - - rl_username_completion_function: protect call to setpwent() with - #ifdef (HAVE_GETPWENT)/#endif. Fixes bug reported by - Gerd Hofmann - -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 - -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 - - 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 +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 - 9/13 + 7/11 ---- -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 +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 - 9/14 + 7/19 ---- -shell.c - - --protected: make option valid only when wordexp is compiled into - the shell. Fix from Roman Rakus - -configure.ac - - HP NonStop (*-nsk*): compile --without-bash-malloc. Change from - Joachim Schmitz +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 - 9/16 + 9/10 ---- -subst.c,execute_cmd.c,lib/glob/sm_loop.c,lib/sh/shquote.c - - minor code cleanups from Joachim Schmitz - -lib/readline/colors.h - - workaround for HP NonStop compiler issue with from - Joachim Schmitz +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 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 - -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 - - 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 + - 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 + - 9/21 + 9/27 ---- -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 +{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 - 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 +builtins/read.def,variables.c + - fixed a couple of problems (READLINE, ARRAY_VARS) that prevented + the minimal config from building - 9/23 + 10/1 ---- -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 +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 + - 9/27 + 10/4 ---- -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 +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 + + - 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 + - 10/2 - ---- command.h - - add c_lock member to coproc structure for future use to tell who is - manipulating it + - W_NOASSNTILDE: new word flag, means to not perform tilde expansion + following a `:' even if the word has the W_ASSIGNRHS flag enabled -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 - - 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 +subst.c + - 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 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 +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 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 + - 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 + -trap.h - - extern declaration for check_signals_and_traps + 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 -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/21 + ----- +subst.c + - expand_string_for_rhs: set W_NOASSNTILDE if the operator is `=' + for backwards compatibility with bash-4.4 +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 - 10/14 + 10/27 ----- -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) +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 -sig.c - - sigint_sighandler: call bashline_set_event_hook to set the event - hook if we're executing in a readline signal handler context +parse.y + - 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 , the result of a fuzzing test. Pointer + to place for the fix from Eduardo Bustamante -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) + 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 +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 + 11/1 + ---- parse.y - - yy_readline_get: don't set interrupt_immediately before we call - readline(). Inspired by report from lanshun zhou - - -input.c - - getc_with_restart: add call to run_pending_traps after call to - CHECK_TERMSIG + - 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 + -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 + 11/3 + ---- +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. -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 - - 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 + 11/7 + ---- +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 + https://savannah.gnu.org/support/?109403 - 10/15 + 11/10 ----- -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 +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 ; fix + from Eduardo Bustamante - 10/20 + 11/16 ----- -builtins/wait.def - - WAIT_RETURN: set wait_signal_received back to 0 for the potential - next call to wait +subst.c + - 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 , originally based on + http://lists.gnu.org/archive/html/bug-bash/2017-11/msg00047.html -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 + 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 -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 +lib/readline/readline.h + - rl_empty_keymap: new public extern declaration -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 - - 10/24 - ----- -lib/glob/glob.c - - glob_filename: only check directory_name for globbing chars if - it's of non-zero length +lib/readline/doc/rltech.texi + - rl_empty_keymap: document new function -lib/sh/strchrnul.c - - new simpler implementation +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 -subst.c - - command_substitute: call set_shellopts after turning off errexit - in subshells so it's reflected in $SHELLOPTS + 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 - 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 + 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 -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 - - execute_null_command: do the same thing in the parent branch after - make_child - - 11/14 + 11/28 ----- -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 +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 -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 - -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 +lib/readline/readline.h + - rl_check_signals: new extern declaration -lib/malloc/malloc.c - - block_signals: renamed to _malloc_block_signals, made public - - unblock_signals: renamed to _malloc_unblock_signals, made public +lib/readline/doc/rltech.texi + - rl_check_signals: document new public function -lib/malloc/imalloc.h - - extern declarations for _malloc_{un,}block_signals +variables.c + - 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 -lib/malloc/table.c - - mregister_alloc, mregister_free: block signals around table - manipulation +config-top.h + - OLDPWD_CHECK_DIRECTORY: new define, defined to 1 by default - 11/15 + 11/29 ----- -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 +Makefile.in + - pathexp.o: add dependencies on libintl.h. Reported by + Ross Burton -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 + 12/1 + ---- +lib/sh/ufuncs.c + - fsleep: add blocking and releasing SIGCHLD using sigprocmask + around call to select(2) even if pselect(2) is not available -include/stdc.h - - CPP_STRING: new define, replaces __STRING + 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 -lib/malloc/{malloc.c,imalloc.h} - - replace __STRING with CPP_STRING + 12/5 + ---- +subst.c + - 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 - 11/16 - ----- -lib/readline/bind.c - - sv_histsize: if argument evaluates to a value < 0, unstifle the - history +subst.h + - find_procsub_child,set_procsub_status,reap_procsubs: extern + declarations - 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 +nojobs.c + - set_pid_status: if we are reaping a process substitution, call + set_procsub_status to record the fact - 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 + - waitchld: if we are reaping a process substitution, call + set_procsub_status to record the fact. Doesn't really do anything + yet -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 - + 12/6 + ---- +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 + + - 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 -doc/{bash.1,bashref.texi} - - document new `wait -n' option + 12/7 + ---- +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 + 12/8 + ---- 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 - - - 11/28 - ----- + - 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 -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 +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 -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 +execute_cmd.c + - 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 + - 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 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 - - 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 + - add_fifo_list: for the FIFO case (no /dev/fd), make sure we + initialize the new members of the fifo list after xrealloc - 12/2 + 12/9 ---- 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 - + - 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 - 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 +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) + +tests/{run-procsub,procsub.{tests,right}} + - new file, tests of process substitution that have failed in the past 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 +jobs.c + - wait_for_background_pids: warn if one of the jobs is stopped -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 +subst.c + - wait_procsubs: new function, call wait_for for every "live" process + substitution - 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 +jobs.c + - wait_for_background_pids: call wait_procsubs to reap any living + process subsitutions 12/13 ----- -execute_cmd.c - - execute_coproc: handle the command's exit status being inverted - (an oversight). Fixes bug reported by DJ Mills - and Andreas Schwab +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]] 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 - - -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 - -doc/{bash.1,bashref.texi} - - document new printf %()T default argument behavior +subst.[ch] + - string_list_dollar_star: now takes QUOTED and PFLAGS arguments like + string_list_dollar_at, changed all callers. Not used yet. - 12/15 + 12/16 ----- -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 - -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 - 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 + - 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 -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 - - 12/23 + 12/17 ----- -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 +array.h + - set_element_value: new define, sets array element AE to VALUE -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) +variables.c + - set_pipestatus_array: use set_element_value where appropriate - 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 + 12/18 ----- -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 + - 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 -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/19 + ----- +doc/{bash.1,bashref.texi} + - 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 - 12/26 + 12/22 ----- -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 - - - 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 +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 + 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 + - 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 + -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 , where declare -ag foo=(bar) could modify - array variable foo at previous function scope, not global scope +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 ----- -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 as part of VMS bash port +array.c,arrayfunc.c,... + - many changes to clean up unused variables and functions. From a + report from Siteshwar Vashisht - 12/29 + 12/28 ----- -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 +lib/readline/terminal.c + - _rl_term_clrscroll: save the `E3' termcap capability, which clears + the scrollback buffer where supported. Unused right now -variables.h - - sv_shcompat: new extern declaration +lib/readline/rlprivate.h + - _rl_term_clrscroll: extern declaration -doc/{bash.1,bashref.texi} - - BASH_COMPAT: description of new variable +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 -lib/readline/complete.c - - _rl_colored_stats: default back to 0 for 4.3 release branch +doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} + - document new `if variable comparison value' construct - 1/5/2013 + 1/2/2018 -------- -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 - - - 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/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 -lib/readline/readline.h - - rl_signal_event_hook: new extern declaration + 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. -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 +make_cmd.c + - make_function_def: call bind_function_def with flags == 0 -lib/readline/doc/rltech.texi - - rl_signal_event_hook: document new function +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 ; final piece of + fix from 12/15/2011 -bashline.c - - changes to set rl_signal_event_hook instead of rl_event_hook + 1/4 + --- +subst.c + - param_expand: deal with string_list_dollar_star returning NULL. + Fixes bug reported by Martijn Dekker -lib/readline/readline.h - - change readline version numbers to 6.3 +builtins/history.def + - history_builtin: enabled code that performs range deletion - 1/6 + 1/5 --- -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 +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 - 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 and Dan Douglas +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 -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 - +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 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 - +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/13 + 1/12 ---- -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 - -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 +parse.y + - 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() - 1/15 - ---- -builtins/cd.def - - cd_builtin: make sure call to internal_getopt handles -e option. - Fixes bug reported by +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 - 1/17 + 1/14 ---- -subst.c - - expand_word_list_internal: make sure tempenv_assign_error is - initialized to 0 +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 -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 +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_*) - 1/20 + 1/15 ---- -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 [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 +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.) - 1/22 + 1/16 ---- -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' +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 - 1/23 + 1/19 ---- -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 - - -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' +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 - 1/24 + 1/22 ---- -builtins/evalfile.c - - _evalfile: add missing `close (fd)' calls before returning to - avoid fd leaks. Bug and fix from Roman Rakus +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 - 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 - ; the rest of the fix is with the changes in - trap and signal handling and doing away with interrupt_immediately +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 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 - +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 - 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 + - 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 + +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 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 +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 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 - -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 +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 -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 +doc/{bash.1,bashref.texi} + - shopt: document `assoc_expand_once' shell option - 2/2 + 2/1 --- -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 +config-top.h + - DONT_REPORT_SIGTERM: define, so non-interactive shells will no + longer print termination messages for child processes killed by + SIGTERM - 2/9 + 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) -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 +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 + - do_redirection_internal: if redir_open returns RESTRICTED_REDIRECT, + return that right away (instead of errno) so we can print a better + error message - 2/12 + 2/11 ---- -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" - +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 + based on his patch from 12/8. + - bgp_resize: cap max table size for bgpids at MAX_CHILD_MAX (32768) - 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 +include/typemax.h + - TYPE_MINIMUM, TYPE_MAXIMUM: updated definitions from coreutils-8.29, + silences some compiler warnings 2/14 ---- -configure.ac - - add check for sig_atomic_t; already a placeholder for it in - config.h.in +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 - 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 + - 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 - 2/16 + 2/15 ---- -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 +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 -trap.[ch] - - get_original_signal: now global so rest of the shell can use it +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 + - 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 -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 +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 -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 +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 - - 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 when testing with his `timeout' - program + - execute_function: make sure BASH_ARGV and BASH_ARGC are initialized + before calling push_args (and before calling remember_args) -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 - - 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) +builtins/source.def + - source_builtin: make sure BASH_ARGV and BASH_ARGC are initialized + before calling push_args (and before calling remember_args) - 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 +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 - 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 +builtins/shopt.def + - compat44: new shell option. This will be the last compatXX option + +doc/{bash.1,bashref.texi} + - compat44: document new shell option 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) +builtins/common.h + - ISOPTION: check s[1] before s[2] to avoid out of bound reads. Fixes + bug reported by jeremy@feusi.co - 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 if SIG_DFL not defined - (same logic as trap.h) to pick up sig_atomic_t +input.h + - B_SHAREDBUF: new flag for buffered input fds, indicates that this + fd shares its b_buffer with another fd -unwind_prot.c - - include sig.h before quit.h (reverse order) +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 - 2/27 + 2/24 ---- -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 +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 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 - - 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 +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 + - 3/10 + 3/11 ---- -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 - -[bash-4.3-alpha frozen] +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 back + on 2/11/2018 - 3/14 + 3/13 ---- -general.c - - trim_pathname: use memmove instead of memcpy since the source and - destination pathnames may overlap. Report and fix from Matthew - Riley +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 - 3/18 + 3/15 ---- -configure.ac - - socklen_t is defined as `unsigned int' if configure can't find it +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 - 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 +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 - 3/21 + 3/19 ---- -doc/{bash.1,bashref.texi} - - Added mention of ${!name[@]} and ${!name[*]} expansions to get all - indices of an array. Suggested by Jonathan Leffler - +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 - 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 +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 -subst.c - - skip_to_delim: handle SD_IGNOREQUOTE. no callers use it for now + 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 3/25 ---- -support/config.{guess,sub} - - updated to versions from autoconf-2.69 +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 + - rl_function_of_keyseq_len: new application-callable function that + takes a length parameter; otherwise equivalent to rl_function_of_keyseq. - 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 +lib/readline/readline.h + - rl_function_of_keyseq_len: add extern declaration for new function -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} +lib/readline/doc/rltech.texi + - rl_function_of_keyseq_len: document new function interface -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 +bashline.c + - bash_execute_unix_command: use rl_function_of_keyseq_len to handle + key sequences with embedded NULs (\C-@). Fix from Koichi Murase + -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 +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 + + 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 + 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 - + - 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 ÐиÑиллов Ðима + - 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 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 +subst.c + - 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 + 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 +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 + -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 + 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 -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 + 4/9 + --- +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 - 4/13 + 4/10 ---- -subst.c - - process_substitute: run the EXIT trap before exiting, as other - shells seem to. Fixes problem pointed out by Dan Douglas - +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 + + +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 -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 - 4/14 + 4/11 ---- -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 +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 + -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 +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 - 4/15 + 4/12 ---- -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 - -variables.c - - bind_int_variable: make sure invisible flag is unset. Fixes problems - like "declare -ai a; : $(( a[4]=4 ));" +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 -arrayfunc.c - - array_variable_part: return variable even if invisible flag set, - callers must handle invisible vars +builtins/common.h + - parse_and_execute_cleanup: changed prototype - 4/18 + 4/13 ---- -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/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 -builtins/declare.def - - declare_builtin: only disallow global references at this point if - we are at the global scope +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 - 5/16 + 4/18 ---- -configure.ac - - update release status to beta +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 - 5/23 + 4/19 ---- -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 - - 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 +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 -lib/readline/doc/rltech.texi - - new section with an example program illustrating the callback - interface. Suggested by Peng Yu + 4/26 + ---- +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 -examples/loadables/Makefile.in - - remove references to `cut' and `getconf', which were removed in - early March +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 - 5/28 + 4/27 ---- -lib/sh/pathphys.c - - sh_realpath: correct inverted two arguments to call to sh_makepath. - Report and fix from Julien Thomas +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 - 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 +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 - 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 +lib/glob/gm_loop.c + - INTERNAL_GLOB_PATTERN_P: same change to return TRUE for a backslash + that doesn't end the pattern -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 +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 + - 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 +lib/sh/clock.c + - print_clock_t: use locale_depoint() in the same way as print_timeval - 6/29 + 4/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 +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 + -doc/bashref.texi - - document new --enable-glob-asciiranges-default configure option + 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 + 5/2 + --- variables.c - - assign_in_env: implement += value appending semantics for assignments - preceding command names + - 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 - 7/4 + 5/3 --- -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 - -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 +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 + - 7/6 + 5/4 --- -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 +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 - 7/8 + 5/7 --- -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 - - -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 - -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 +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 - 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 +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 - 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 - - 7/13 - ---- -doc/{bash.1,bashref.texi} - - slight change to add a description of `shopt -o' suggested by Bruce - Korb - - 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 - -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 - - 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 - - 8/3 - --- -Makefile.in - - pcomplete.o: add dependency on $(DEFDIR)/builtext.h. Suggested by - Curtis Doty - - 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 - - - 8/6 - --- -doc/{bash.1,bashref.texi},builtins/hash.def,lib/readline/doc/rluser.texi - - minor typo changes from Geir Hauge - -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 - - 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 - - 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 - - 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 - - - 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 - -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 - -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 - - -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 - - 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 - - - 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 - -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 - - - 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 - -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 - -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 - - -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 - - 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 - - - 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 - - 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 - -support/shobj-conf - - add support for Darwin 13 (Mac OS X 10.9, Mavericks). Based on a - report by Ludwig Schwardt - - 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 - - - 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 - - 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 - - - 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 - - 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 - - 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 - - -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 - - 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 - - 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 - -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 - - -Makefile.in - - install: make sure to use $(DESTDIR) when installing OTHER_DOCS. - Report and fix from Matthias Klose - -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 - - 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 - -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 - - 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 - - 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 - - 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 - -Makefile.in - - variables.o: add dependency on builtins/builtext.h; helps with - parallel builds. Report from Linda Walsh - -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 - - - 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 - - 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 - -general.c - - include trap.h for any_signals_trapped() prototype - -lib/sh/unicode.c - - include 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 - - - 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 - - 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 - -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 - - 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 - - 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 - - - 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 - -[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 - - 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 - - 2/26 - ---- -[bash-4.3 released] - - 2/27 - ---- -aclocal.m4 - - broken wcwidth check: fix typo reported by David Michael - - - 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 - -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 - - 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 - - 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 - -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 - -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 - - - 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 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 - - 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. - -doc/bash.1 - - shell-kill-word and shell-backward-kill-word should be documented - as unbound by default. Report from Oliver Hartley - - -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 - - 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 - - - 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 - - -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 - - - 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 - - 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 - - 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 - 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 - - 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 - - - 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 - - {save,restore}_parser_state: save and restore need_here_doc flag. - Rest of fix for bug reported by Jared Yanovich - - 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 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 - 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 - - 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 - - - 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 - - - 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 - - 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 - -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 - - 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 - - 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 - - - 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 - - -arrayfunc.c - - bind_array_var_internal: make sure ENTRY no longer has invisible - attribute before returning. Fixes bug reported by Geir Hauge - - - 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 - - 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 - - - 6/16 - ---- -builtins/shopt.def - - compat42: make sure the `compat42' option sets the correct variable - for compatibility level. Fixes bug reported by Ondrej Oprala - - -support/bashbug.sh - - fix typo when echoing $USAGE. Report from Shantanu Kulkarni - - -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 - - 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 - -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 - -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 - - 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 - - -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 - - -subst.c - - command_substitute: other shells do not appear to inherit the -v - option when reading and executing command substitutions. Reported - by Ondrej Oprala - - 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 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 - - {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 - - - 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 - - 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 - - - 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 - - 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 - - -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 - - -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 - -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 - - 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 - -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 - - 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 - - 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 - - - 9/3 - --- -execute_cmd.c - - evalnest_max,sourcenest_max: initialize from EVALNEST_MAX and - SOURCENEST_MAX, respectively. Feature suggested by - - -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 - - -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 - -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 - - 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 - -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 - - 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 - -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 . 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 and Michal Zalewski - . 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 . 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 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 . 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 - 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 - - 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 - - - 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 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 - - 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 - - - 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 - - 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 - - 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 - - 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 - - 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 - ----- -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 - - 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 - - - 10/28 - ----- -lib/readline/bind.c - - enable-bracketed-paste: new bindable variable, enables support for - a terminal's `bracketed paste mode'. Code contributed by - Daniel Colascione - -doc/bash.1,lib/readline/doc/{readline.3,rluser.texi} - - enable-bracketed-paste: add description - -lib/readline/{readline.c,rlprivate.h} - - _rl_enable_bracketed_paste: declarations - - #defines for use by bracketed paste implementation - -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/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 - -lib/readline/funmap.c - - bracketed-paste-begin: new bindable command, executes - rl_bracketed_paste_begin - -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 - - 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 - -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 - - `BANG list_terminator' production: do the same thing - -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 - -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 - -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 - -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 - and in 2014 by Oyvind Hvidsten - - -configure.ac - - enable-function-import: new option, controls whether function imports - are included. Enabled by default. Patch from David Galos - - -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 - - 11/12 - ----- -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 - - - 11/13 - ----- - -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 - ----- -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 - -lib/readline/rlconf.h - - defines for default values of the mode strings for each editing mode - and keymap - -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 - -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 - - -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 - - 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 - -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 - -lib/readline/readline.h - - rl_redraw_prompt_last_line: extern declaration, undocumented in - texinfo manual until I get it a little more 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 and Rob Foehl - . 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/18 - ----- -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 - - 11/19 - ----- -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 - -lib/readline/readline.c - - readline_initialize_everything: initialize the colors from $LS_COLORS - if _rl_colored_completion_prefix is non-zero - -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 - -lib/readline/colors.h - - _rl_print_prefix_color: new extern declaration - -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 - (in a slightly different form) and - Duy Nguyen - - 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 - - -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 - -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 - - 11/21 - ----- -pcomplete.c - - filter_stringlist: the call to strmatch now honors the setting of - nocasematch. Feature request from Ville Skytta - 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 - -externs.h - - match_pattern_{wchar,char}: updated extern declarations - -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 - - - match_wpattern: make sure to fold case if necessary when doing simple - matching - -doc/{bash.1,bashref.texi} - - pattern substitution: updated description to include honoring setting - of nocasematch when performing matching - -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 - -builtins/common.c - - remember_args: call invalidate_cached_quoted_dollar_at() - -builtins/shift.def - - shift_builtin: call invalidate_cached_quoted_dollar_at after modifying - dollar_vars[] - -builtins/source.def - - maybe_pop_dollar_vars: call invalidate_cached_quoted_dollar_at just - to be safe - - 11/23 - ----- -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 - -builtins/common.h - - force_execute_file: new extern declaration - -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 - - 11/24 - ----- -hashlib.h - - DEFAULT_HASH_BUCKETS: doubled to 128, cost in memory use is small but - changes traversal order when not sorting results - - 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 - - 11/28 - ----- - -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 - -subst.h - - ASS_FORCE: new assignment flag; means to allow assignment even if - variable is marked readonly - -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/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 - -lib/sh/shquote.c - - sh_quote_reusable: function returning a version of its string - argument that is quoted for reuse - -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 - -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 - -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 - - 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 - , fix from Eduardo A. Bustamante López - - -config.h.in - - HAVE_PSELECT: define if pselect(2) available - -configure.ac - - check for pselect(2), define HAVE_PSELECT if found - -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 - - - 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 - -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 - - 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) - - 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 - as Debian bash bug 771968 - (https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=771968) - - 12/6 - ---- -subst.c - - command_substitute: short-circuit without forking on a command string - that consists entirely of 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 - - 12/12 - ----- -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 - -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 - - 12/14 - ----- -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 - - -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 - . Will eventually be contingent on - compatibility level > 43, but not there yet. TENTATIVE - - 12/15 - ----- -lib/sh/Makefile.in - - add missing dependencies for shmatch.o. Pointed out by Sergey - Mikhailov - - 12/16 - ----- -{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 - - - - 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 - - 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 , - it has come up in the past - - 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 - - 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 - - - - 12/23 - ----- -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 - - 12/29 - ----- -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 - -configure.ac - - changed version to bash-4.4-devel - -lib/readline/readline.h - - changed version to readline-6.4 - - 12/30 - ----- -readline.h - - struct readline_state: fix types of `ignorefunc' and `attemptfunc' - members - -lib/sh/shquote.c,externs.h - - sh_contains_shell_metas, sh_contains_quotes: now take `const char *' - as parameter - -stringlib.c,externs.h - - strcreplace: `text' argument now `const char *' - -pathexp.[ch] - - quote_globbing_chars: `string' argument now `const char *', accompanying - changes to function local variables - -pcomplete.c - - preproc_filterpat: `text' argument now `const char *' - - filter_stringlist: `text' argument now `const char *' - - 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 - -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 - -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 - -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 - -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 - -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 - - - 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 - - -builtins/declare.def - - declare_internal: use get_current_options instead of - get_current_flags, so `local -' can be generalized - -variables.c - - push_func_var: use set_current_options instead of set_current_flags - so `local -' can be generalized - -doc/{bash.1,bashref.texi} - - document new `local -' feature; originally inspired by Robert Elz - describing feature in NetBSD sh - - 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 - - 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 - -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 - - 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 - -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 - - 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 - - 1/14 - ---- -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 - -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 - -execute_cmd.c - - select_query: if the read builtin doesn't return anything in REPLY, - return NULL (failure). Fixes bug reported by Etherial Raine - - -builtins/read.def - - read_builtin: if REPLY has the readonly or noassign attribute, return - failure - - 1/16 - ---- -redir.c - - redir_open: if open() returns -1/EINTR, check traps as well as - using QUIT to handle signals - - 1/18 - ---- -jobs.c - - wait_for: make sure queue_sigchld is set to 1 before unblocking - SIGCHLD if MUST_UNBLOCK_CHLD is defined - - 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 - -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 - -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 - - 1/23 - ---- -include/posixjmp.h - - use setjmp_sigs instead of redefined setjmp, it fails on Cygwin. - Report from Eric Blake - -builtins/wait.def,shell.c - - use setjmp_sigs instead of setjmp call, since setjmp no longer - redefined to something known - -include/chartypes.h, lib/readline/chardefs.h - - make sure all ctype.h macros are called with unsigned char args, - casting to make sure - -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 - - 1/31 - ---- -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 - - history_do_write: don't attempt to back up non-regular files. - Report from Jonathan Hankins - - 2/2 - --- -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 - -sig.c - - throw_to_top_level: change call to run_interrupt_trap to pass arg 1 - - termsig_handler: change call to run_interrupt_trap - -trap.h - - run_interrupt_trap: update extern prototype declaration - - 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 - -assoc.c - - assoc_to_assign: if an index happens to be `@' or `*', make sure it's - double-quoted. Bug report from Greg Wooledge - - 2/5 - --- -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 - - 2/8 - --- -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 - - -{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 - -lib/sh/shmatch.c - - sh_regmatch: check malloc() return value, handle NULL value if it - fails. Report from Tobias Stoeckmann - - 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 - - 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 - - - 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 - - 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 - - 3/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 - - 3/7 - --- -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 - and Dave Anderson - -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 - -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 - - -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 - - 3/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 - -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 - - - 3/10 - ---- -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 - - - 3/17 - ---- -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 - - 3/19 - ---- -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 - -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 - -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 - - 3/20 - ---- -builtins/set.def - - set_builtin: make `-i' an invalid option, unconditionally for now. - From a bug-bash discussion started by Peng Yu - - 3/21 - ---- -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 - -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 - - - 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 - - 3/23 - ---- -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 - - 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 - -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 - -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 - - - 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 - - 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 - -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 - - -lib/readline/histfile.c - - use PARAMS(x) instead of __P(x). Bug reported by Evan Gates - - - 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 - - 4/10 - ---- -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 - - -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 - - 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 - - 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 - -configure.ac - - function-import: fix typo, assign to correct variable. Found as the - result of a report by Eric Blake - -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 - - 4/19 - ---- -ulimit.def - - fix typo in limits[] declaration of `k' - - 4/20 - ---- -configure.ac - - add template definitions set by AC_USE_SYSTEM_EXTENSIONS from a report - from Andreas Schwab - -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 - - 4/21 - ---- -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 - - 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 - -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 - - - 4/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 - -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 - - 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 - - - 4/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 - - -configure.ac,config.h.in - - sys/ioctl.h: add check in AC_CHECK_HEADERS macro, define HAVE_SYS_IOCTL_H - -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 - - 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 - -builtins/declare.def - - typeset_builtin: add -n to list of supported options. Omission - reported by Valentin Bajrami - -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 - -unwind_prot.h - - uwp_init: extern declaration - -shell.c - - main: call uwp_init right after calling cmd_init -- initialize all the - object caches at the same place - -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 - - 4/28 - ---- -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 - - 4/30 - ---- -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 - - 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 - - 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 - -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 - - -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 - -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 - - - 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 `*' - -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 - - - 5/12 - ---- -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 - -builtins/cd.def - - cd_builtin: print the right error message even if printable_filename - changes errno (e.g., EILSEQ) - -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 - -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 - - - 5/15 - ---- -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 - - 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 - -lib/sh/shmbchar.c - - mbstrlen,mbsmbchar: move calculation of MB_CUR_MAX out of loop; - calculate it once at beginning - -lib/sh/mbscmp.c - - mbscmp: move calculation of MB_CUR_MAX out of loop; calculate it once - at beginning - -lib/sh/mbscasecmp.c - - mbscasecmp: move calculation of MB_CUR_MAX out of loop; calculate it - once at beginning - -lib/sh/shquote.c - - sh_backslash_quote: move calculation of MB_CUR_MAX out of loop; - calculate it once at beginning - -lib/sh/casemod.c - - sh_modcase: move calculation of MB_CUR_MAX out of loop; calculate it - once at beginning - -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) - - 5/22 - ---- -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 - -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 - - - 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 - . XXX - need to make this a bindable - variable; already controlled by _rl_optimize_typeahead - -lib/readline/rlprivate.h - - _rl_optimize_typeahead: extern declaration - -lib/readline/doc/{hstech.texi,history.3} - - next_history: clarify under what circumstances the history offset is - incremented; suggestion from Glenn Golden - -print_cmd.c - - print_arith_command: should be compiled in if either DPAREN_ARITHMETIC - or ARITH_FOR_COMMAND is defined. Report from Flavio Medeiros - - -flags.c - - change_flag: new variable verbose_flag, set when `v' flag modified; - sets value of echo_input_at_read correspondingly - -flags.h - - verbose_flag: new extern declaration - -shell.c - - long_options: --verbose now sets verbose_flag - - main: set echo_input_at_read from verbose_flag after parsing any - long options - -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 - -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 - - 5/27 - ---- -findcmd.[ch] - - add support for EXECIGNORE shell variable, list of extglob patterns - that prevent matching filenames from being identified as executable - files - -variables.c - - EXECIGNORE: arrange for findcmd.c:setup_exec_ignore to be called when - $EXECIGNORE changes - -variables.h - - sv_execignore: extern declaration - -doc/{bash.1,bashref.texi} - - document EXECIGNORE variable - - 5/28 - ---- -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 - -lib/readline/signals.c - - _rl_handle_signal: call rl_callback_sigcleanup on SIGINT. Fixes bug - reported to python group by Martin Panter - -lib/readline/isearch.c - - _rl_isearch_cleanup: now a public function so rl_callback_cleanup can - call it - -lib/readline/search.c - - _rl_nsearch_cleanup: now a public function so rl_callback_cleanup can - call it - -lib/readline/rlprivate.h - - _rl_[in]search_cleanup: extern declarations - -lib/readline/readline.h - - rl_callback_sigcleanup: new extern declaration - -lib/readline/doc/rltech.texi - - rl_callback_sigcleanup: documented - -lib/readline/readline.h - - bump readline version to 7.0 due to addition of rl_callback_sigcleanup - - 5/29 - ---- -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, - - declare -n foo=bar - unset foo # unsets bar - declare -i foo - - should create a (invisible) variable named `bar' with the integer - attribute. Fixes problem reported by Greg Wooledge - - -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 - - - 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/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 - - 6/2 - --- -general.c - - conf_standard_path: moved get_standard_path here from command.def; made - public function - -general.h - - conf_standard_path: extern declaration - - - 6/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 - -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 - -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 - - -builtins/common.h - - CDESC_STDPATH: new flag for describe_command; means to use standard - path for command -pv or -pV - -builtins/command.def - - command_builtin: if -p given with -v or -V, pass the CDESC_STDPATH - flag to describe_command - -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 - - 6/4 - --- -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 - - -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 - -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 via - - - 6/9 - --- -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 - - 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 - -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 - -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 - - 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 - - - shell_execve: before longjmp to subshell_top_level, call reset_parser - to free up any input line and stack of pushed strings - -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 to austin - group - - 6/13 - ---- -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 - - 6/15 - ---- -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) - - 6/16 - ---- -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() - -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 - - 6/22 - ---- -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 - - - 6/23 - ---- -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 - -lib/readline/parens.c - - _rl_enable_paren_matching: make paren matching work in vi insert - mode. Really, this time. Bug report from Carlos Pita - - - 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 - - - 6/30 - ---- -sig.h - - include 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 - -alias.c - - ALIAS_HASH_BUCKETS: table size increased to 64 - - 7/7 - --- - -{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 - -jobs.h - - wait_sigint_cleanup: new extern declaration - -builtins/wait.def - - wait_builtin: call wait_sigint_cleanup after longjmp back to - wait_intr_buf on interrupt - -[bash-4.4-alpha frozen] - - 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 - - 7/10 - ---- - -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 - -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 - - 7/11 - ---- -support/man2html.c - - change calls to malloc to use xmalloc; provide standard xmalloc - definition. Report from Bill Parker - -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 - -quit.h - - CHECK_WAIT_INTR: now also checks wait_intr_flag to ensure valid state - of wait_intr_buf before sh_longjmp - -{jobs,nojobs}.c - - wait_intr_flag: extern declaration for use by CHECK_WAIT_INTR - -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 - -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 - - 7/14 - ---- -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 - - -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' - -builtins/common.h - - optimize_fork: new extern declaration - -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 - -bashhist.c - - bash_history_inhibit_expansion: enable change from 1/10 that skips - over history expansion character in command and process - substitution - - 7/15 - ---- -lib/readline/{history,undo}.c - - replace_history_data now _hs_replace_history_data - - 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 - -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/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 - - 7/17 - ---- -lib/readline/readline.[ch] - - rl_readline_state: now unsigned long, prepare for more than 32 states - - - 7/18 - ---- -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 - - 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/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 - -lib/readline/rlprivate.h - - _rl_vi_domove_motion_cleanup: new extern declaration - -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 with vi-mode `dty' command - in callback mode - - 7/21 - ---- -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 - - 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 - -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 - -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 - -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 - - - 7/23 - ---- -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 - - - 7/24 - ---- -doc/{bash.1,bashref.texi} - - note that the `return' builtin accepts arguments beginning with `-' - without requiring `--' - - 7/27 - ---- -examples/loadables/Makefile.in - - add variables and targets to support `make install'; installs - supported builtins in $(libdir)/bash - - 7/28 - ---- -lib/readline/{readline,rlprivate}.h, lib/readline/display.c - - rearrange some structure members for better alignment and to reduce - padding. Fix from - -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 - -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 - - - 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 - - 7/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 - -doc/{bash.1,bashref.texi} - - clarify definition of metacharacter to explicitly include newline; - prompted by report from George Gallo - - 8/3 - --- -lib/readline/search.c - - _rl_free_history_entry: should be void, not int. Report from - Dilyan Palauzov - -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 - in response to a bug report from isabella - parakiss - - 8/6 - --- -lib/readline/colors.[ch] - - _rl_print_color_indicator: now takes `const char *' argument - -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 - - -lib/termcap/termcap.[ch] - - tputs: should return int instead of void - -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 - - 8/7 - --- -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 - -doc/bashref.texi - - documented that word expansion errors cause fatal errors in posix mode - non-interactive shells - - 8/8 - --- -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 - -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 - - 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 - - 8/9 - --- -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 - - 8/10 - ---- -config-top.h - - OPENLOG_OPTS: if SYSLOG_HISTORY is defined, define to LOG_PID, so - each message is tagged with the pid - -bashhist.h - - bash_syslog_history: the first time it's called, call openlog with - OPENLOG_OPTS and SYSLOG_FACILITY - - 8/11 - ---- -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 - - 8/12 - ---- -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 - - parameter_brace_expand: handle returning &expand_wdesc_error or - &expand_wdesc_fatal from parameter_brace_expand_indir in case it does - that someday - - 8/13 - ---- -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 - -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 - - 8/14 - ---- -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 - - 8/15 - ---- -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 - -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 - -configure.ac,Makefile.in,builtins/Makefile.in - - loadablesdir: set in configure, substitute into Makefiles. Reserved - for future use - - 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 - - 8/20 - ---- -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 - - 8/21 - ---- -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 - -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 - -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 - -lib/readline/{misc,text,vi_mode}.c - - fix return values from rl_read_key to handle < 0 - - 8/22 - ---- - -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 - https://bugzilla.redhat.com/show_bug.cgi?id=795795 - -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 - -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 - - - 8/23 - ---- -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 - - 8/25 - ---- -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 - - 8/27 - ---- -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 - -builtins/read.def - - reset_alarm: cancel alarm before restoring signal handler to avoid - possible race condition. Report and fix from Oleg Popov - - -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 - 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 - -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 - - 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/util.c - - _rl_audit_tty: updated from Red Hat patch - -lib/readline/readline.c - - HAVE_DECL_AUDIT_USER_TTY: correct #define check - - 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 (?) - -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 - - 9/15 - ---- -variables.c - - initialize_shell_variables: cope with a NULL env pointer. Fixes bug - reported by ziyunfei <446240525@qq.com> - - 9/16 - ---- -builtins/exec.def - - exec_builtin: if -c is supplied, pass an empty array instead of a NULL - pointer to shell_execve - -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> - - 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 - -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 - - 9/18 - ---- -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 - -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 - - 9/19 - ---- -subst.c - - pat_subst: handle REP being NULL. Fixes bug reported by Brian - Carpenter - -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 - -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 - -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 - - 9/20 - ---- -subst.c - - get_var_and_type: return appropriate values if variable indirection - results in a NULL variable. Fixes bug reported by Brian Carpenter - - -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 - - 9/21 - ---- -lib/readline/rlconf.h - - ENABLE_AUDIT_TTY_SUPPORT: now undefined (off) by default - - 9/24 - ---- -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 - -input.c - - make_buffered_stream: use B_TEXT in buffered stream flags instead - of (typo) O_TEXT. Report and fix from Eric Blake - - 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 - -doc/{bash.1,bashref.texi} - - kill: document new `-L' option - - 10/2 - ---- -[bash-4.4-beta frozen] - - 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 - - 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 - - char_is_quoted: make analogous changes to handle $'...' so we can - accommodate $'ab \' cd' - - 10/11 - ----- -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 - -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 - -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 - -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 - - 10/13 - ----- -variables.c - - initialize_shell_variables: add call to sv_shcompat, so BASH_COMPAT - can be set in the initial environment - -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 - -COMPAT,doc/{bash.1,bashref.texi} - - compat43: added loop_level changes to description - - 10/15 - ----- -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 - - -support/Makefile.in - - bash.pc: remove as part of distclean, not clean. Report from Andreas - Schwab - - 10/17 - ----- -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 - - - 10/20 - ----- -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> - -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 - - - 10/22 - ----- -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) - - 10/24 - ----- -jobs.[ch] - - bgpids: new implementation from a patch from John Fremlin - , 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 - -subst.c - - inherit_errexit: new variable to control whether or not command - substitution inherits the -e (errexit) option. Disabled by default - -general.c - - posix_initialize: set inherit_errexit = 1 when Posix mode is enabled - -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 - - -{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 - - -configure.ac - - when checking for sys/resource.h, make sure to include - 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 - - 10/26 - ----- -subst.h - - SD_ARITHEXP: new flag value for skip_to_delim, supports parsing - arithmetic expressions in parameter expansions - -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 - -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 - - 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/*.def - - make sure to consistently use builtin_help() instead of mix of that - function and builtin_usage() - - 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 - - - 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 - - -parse.y - - prompt_again: set ps0_prompt from $PS0 in an interactive shell - -doc/{bash.1,bashref.texi} - - PS0: document new prompt string - - 11/3 - ---- -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 - - 11/4 - ---- -doc/{bash.1,builtins.texi} - - inherit_errexit: add to shopt description; modify Posix mode - description - - 11/9 - ---- -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 - - - 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 - - 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 - -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 - - 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 - - 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 - - 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 - - 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 - - as https://savannah.gnu.org/support/index.php?108593 - - 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 - - -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 - - -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 - -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 - - -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 - -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 , affects RETURN, DEBUG, ERROR - traps - - 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 - - 12/1 - ---- -parse.y,make_cmd.c - - here_doc_first_line: new variable, set to non-zero to indicate the - first line of possibly multiple here documents associated with the - current command. Set in parse.y:gather_here_documents() before - reading any here documents, set to 0 after reading the first line - of any here document in make_cmd.c:make_here_document(). - -parse.y - - history_delimiting_chars: if parser_state indicates we are reading - a here document, don't use current_command_line_count to see whether - or not we're on the first line of a here document -- it can be fooled - by multi-line commands (or even backslash-escaped newlines). Use - here_doc_first_line to check that directly. Fixes bug reported by - Geoffrey Allott - -shell.h,parse.y - - save and restore here_doc_first_line as part of the shell's parser - state - -lib/sh/tmpfile.c - - use ANSI-C rand() interface if random() not available. Fixes problem - with linking on (ancient) Solaris 2.4 reported by Klaus Ziegler - - - 12/2 - ---- -aclocal.m4 - - RL_LIB_READLINE_VERSION: if cross-compiling, assume current version - of readline if cross-compiling bash while using an external readline - library. Fix from Barry Davis - -execute_cmd.c - - execute_builtin: save and restore value of builtin_ignoring_errexit - instead of assuming we can set it back to 0 -- the ignore-errexit - cases might be nested - - execute_builtin: after a builtin executes and eval_unwind is set, - set exit_immediately_on_error to 0 if builtin_ignoring_errexit is - set, and back to the value of errexit otherwise, just like the - code that sets -e does. Fixes short-circuiting bug reported by - Marcin Swigon - - 12/5 - ---- -builtins/setattr.def - - set_or_show_attributes: instead of using a fixed string for the - options argument to `declare', which results in export adding the - readonly attribute, build the option string dynamically like in - subst.c:shell_expand_word_list() - - set_or_show_attributes: don't add the -r option to declare if the - attribute passed as an argument doesn't include att_readonly; add - -x if the attribute includes att_exported - - set_or_show_attributes: add the -g option to declare so readonly - and export in functions that go through this code path don't create - local variables. Part of fix for bug reported by ziyunfei - <446240525@qq.com> - -execute_cmd.c - - make_internal_declare: if we have an assignment builtin that isn't - supposed to create local variables (export/readonly), make sure to - add the W_ASSNGLOBAL flag to each assignment statement word. - Part of fix for bug reported by ziyunfei <446240525@qq.com> where - readonly can create local variables when invoked with a compound - array assignment as an argument within a shell function - -subst.c - - make_internal_declare: added third argument: command name. Not used - in any useful way yet - - do_compound_assignment: handle attempted assignments to readonly - variables and print error messages, like bind_variable does and the - callers expect. This means that assignments to readonly array - variables can't go through a code path that allows them to fail - silently - -doc/Makefile.in - - uninstall: run install-info --delete after removing the installed - info file to update the directory file - -execute_cmd.c - - execute_disk_command: since we still (and have always) perform - redirections in child processes, we need to mark that state so - we know that we're in a child process. subshell_performing_redirections - is the new variable; non-zero when executing do_redirections() - -subst.c - - process_substitute: if we are executing process substitution in a - redirection expansion context (expanding_redir == 1), the child - process should not have access to any temporary environment the - parent has. Call flush_tempenv() in the child process to get rid - of it. Fix for bug reported by Clint Hepner - - 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 - - - 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 - - - 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 - - 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 - - 12/18 - ----- -execute_cmd.c - - execute_function: unwind-protect and restore BASH_ARGC and BASH_ARGV - - restore_funcarray_state: now global - -execute_cmd.h - - make func_array_state type global, add extern function declaration - for restore_funcarray_state - -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 - - - 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 - - 12/22 - ----- -bashhist.c - - enable_history_list,remember_on_history: initialize to 0 instead of 1 - -shell.c - - init_interactive,init_interactive_script: set enable_history_list and - remember_on_history to 1 (defaults) - - 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 - -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 with command-line - option `-o history' not having any effect - - 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) - -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 - -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 - - 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 , also suggested - by Christoph Anton Mitterer - -examples/loadables/setpgid.c - - setpgid: new loadable builtin, originally contributed by Jason - Vas Dias - - 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 - -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 - -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 - -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 - - 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 - -bashhist.c - - bash_history_inhibit_expansion: use skip_to_histexp instead of - skip_to_delim - -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 - - 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 - -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 - - 1/6 - --- -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 - - 1/7 - --- -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 - -shell.c - - get_current_user_info: protect endpwent() with #ifdef HAVE_GETPWENT. - Fixes bug reported by pb - - 1/8 - --- -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 - - - 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 - - 1/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 - - 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 - - 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 - - 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 - ---- -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 - -configure.ac - - remove support for purify and purecoverage - - change release level to `rc1' - - 1/15 - ---- -builtins/enable.def - - dyn_load_builtin: fix missing argument to builtin_error if load function - returns an error. Fix from Aharon Robbins - - 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 - - 1/21 - ---- -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 - - - 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 - - 1/27 - ---- -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 - - 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 - - 2/11 - ---- -bashhist.c - - bash_history_inhibit_expansion: function should be compiled in only if - BANG_HISTORY is defined. Report from isabella parakiss - - -[bash-4.4-rc1 frozen] - - 2/15 - ---- -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 - - 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 - - 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 - - 2/21 - ---- -lib/sh/netconn.c - - isnetconn: return false if getpeername fails with errno == EBADF. - Bug and fix from Andrew Gregory - -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 - - 2/22 - ---- -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 - - _rl_colored_completion_prefix: default is now 0, testing is complete - - 2/23 - ---- -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 - - 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 - - skip_double_quoted: add missing argument to declaration - -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 - - 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 - - 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 - -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 - - -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 - - -lib/readline/vi_keymap.c - - bind rl_vi_unix_word_rubout to ^W by default in both insert and - command mode - -lib/readline/rltty.c - - _rl_bind_tty_special_chars: if in vi mode, bind the WERASE character - to rl_vi_unix_word_rubout - -lib/readline/funmap.c - - vi-unix-word-rubout is new bindable name for rl_vi_unix_word_rubout - -lib/readline/readline.h - - rl_vi_unix_word_rubout: new extern declaration - - 2/28 - ---- -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 - - -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 - - 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 - - - 3/12 - ---- -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 - - -lib/readline/readline.h - - rl_clear_visible_line: extern declaration - -lib/readline/doc/rltech.texi - - rl_clear_visible_line: add documentation - - 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 - - - 3/28 - ---- -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 - - 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 , original version - of patch from Piotr Grzybowski - - 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 - - 4/7 - --- -builtins/{alias,complete,jobs}.def - - {alias,compopt,disown}: add missing `CASE_HELPOPT;' so --help option - prints help longdoc instead of builtin_usage() - - 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 - - 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 - -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 - - 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 - - 4/13 - ---- -bashhist.c - - hc_erasedups: fix memory leak by freeing history entry returned by - remove_history. Bug and fix from Seiichi Ishitsuka - - - 4/19 - ---- -config-top.h - - CD_COMPLAINS: now settable in config-top.h; enables (fatal) error - messages if cd is given multiple directory arguments - - 4/20 - ---- -execute_cmd.c - - coproc_setvars: refuse to create variables with names that are not - valid identifiers. Suggestion from Piotr Grzybowski - - -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 - - -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 - -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 - - convert_var_to_assoc: make sure that the newly-converted associative - array variable is not marked as being an indexed array - - 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 - -histexpand.c - - history_tokenize_word: handle >| as a single token. Fix from - Piotr Grzybowski from a report from - idallen@idallen-fibe.dyndns.org - - 4/24 - ---- -execute_cmd. - - coproc_setvars: don't overwrite readonly variables used as coproc - names. From a report from Grisha Levit - -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 - from a report from idallen@idallen-fibe.dyndns.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 - - 4/25 - ---- -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 - - 4/26 - ---- -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 - - - 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 - - -jobs.[ch] - - wait_for_single_pid: now takes additional `int flags' argument - -{jobs,execute_cmd}.c,builtins/wait.def - - wait_for_single_pid: changed callers to add extra argument - -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 - - 4/28 - ---- -general.c - - bash_tilde_expand: try not setting interrupt_immediately or - terminate_immediately; see what happens with networked password - databases - - 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 - - - 5/1 - --- -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 - -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 - -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 - -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 - - - 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 - -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. - -{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) - - 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 - -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 - - 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 - -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 - -general.c - - valid_nameref_value: disallow values consisting solely of digits, - like the positional parameters - -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') - - 5/5 - --- -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 ; fix by Piotr Grzybowski - - -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 - - 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 - -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 - - shopt_set_debug_mode: make sure error_trace_mode reflects the setting - of extdebug. This one is tentative. Fix from Grisha Levit - - - shopt_set_debug_mode: call set_shellopts after setting error_trace_mode - or function_trace_mode. Fix from Grisha Levit - -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 - - start_debugger: set $SHELLOPTS and $BASHOPTS to the option values are - reflected if we change or set them here. Fix from Grisha Levit - - -builtins/set.def - - reset_shell_options: add reset values for: posix, nolog, pipefail. - Fix from Grisha Levit - -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 - - - reset_shopt_options: make sure the following options have the right - defaults based on #defines: checkjobs, checkwinsize, direxpand, - extglob, globasciiranges. Fix from Grisha Levit - - -flags.c - - reset_shell_flags: add missing flags, re-initialize history_expansion - based on STRICT_POSIX - - 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 - - -variables.[ch] - - ifsname: move define to variables.h - -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 - - 5/16 - ---- -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 - - - 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 - -variables.c - - bind_variable_internal: don't call valid_nameref_value if we're - forcing assignment with (flags & ASS_FORCE) - -builtins/read.def - - read_builtin: handle bind_variable returning NULL when setting REPLY. - Report and fix from Grisha Levit - -builtins/setattr.def - - set_var_attribute: handle bind_variable returning NULL - -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 - -variables.c - - check_unbind_variable: use internal_error instead of builtin_error - -{execute_cmd,variables}.c - - fix some places where bind_variable could return NULL and it was not - checked. Fix from Piotr Grzybowski - - 5/17 - ---- -arrayfunc.c - - convert_var_to_{array,assoc}: make sure to turn off nameref attribute, - since namerefs can't be arrays - -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 - -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 - - 5/18 - ---- -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 - -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 - -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 - - 5/19 - ---- -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. - -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 - -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 - -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" - -variables.c - - make_vers_array: use unbind_variable_noref to unset "BASH_VERSINFO" - -lib/sh/shmatch.c - - sh_regmatch: use unbind_variable_noref to unset "BASH_REMATCH" - -bashline.c - - bash_execute_unix_command: use check_unbind_variable to unset - READLINE_LINE and READLINE_POINT - -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 - -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 to fix a FreeBSD problem - -configure.ac,config.h.in - - mkstemp: check for mkstemp, define HAVE_MKSTEMP if available - -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 - - - 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 - - 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 - - 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) - - 5/25 - ---- -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 - - 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 - - 5/29 - ---- -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 - - 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 - -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 - -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 - -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 - - 5/31 - ---- -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 - -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 - - - 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 - -general.c - - check_selfref: new function, checks a NAME against a VALUE for nameref - self-reference - -general.h - - check_selfref: extern declaration - -builtins/declare.def - - declare_internal: call check_selfref to determine whether a given NAME - and VALUE constitute an invalid nameref variable self-reference - -variables.c - - bind_variable_internal: call check_selfref to determine whether a - given NAME and VALUE constitute an invalid nameref variable self- - reference - - 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 - -externs.h - - clear_shell_input_line: extern declaration - -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 - -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 - -builtins/set.def - - unset_builtin: changes to fix three problems reported by Grisha - Levit : - 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' - -redir.c - - redir_varvalue: handle case where nameref var points to subscripted - array reference. Reported by Grisha Levit - -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 - - -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 - -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 - - 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' - -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 `]' - - 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 - - - 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 - - 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 - - - sv_strict_posix: make sure posixly_correct is set only if - POSIXLY_CORRECT is set and has a value. Reported by Grisha Levit - - - 6/16 - ---- -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 - - 6/21 - ---- -execute_cmd.c - - shell_execve: make sure errno is (re)set appropriately before - returning error value on exec format error - - 6/23 - ---- -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 - - 6/30 - ---- -configure.ac - - release version is now `beta2' - -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 - - 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 - - -subst.[ch],arrayfunc.c - - string_list_dollar_at: now takes a new third argument, currently - reserved for future use; changed callers and declaration - - 7/7 - --- -[bash-4.4-beta2 frozen] - - 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 - - - 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 - - -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) - -lib/readline/readline.h - - rl_pending_signal: new extern declaration - - rl_persistent_signal_handlers: new extern declaration - - 7/19 - ---- -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 - - - 7/20 - ---- -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 - -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) - - 7/21 - ---- -execute_cmd.c - - execute_function: unwind-protect function_line_number, in case we - are executing a function inside another function. Reported by - Grisha Levit 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 - - 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 - -arrayfunc.h - - AV_ASSIGNRHS: new flag, indicate that ${a[@]} is being expanded on - the RHS of an assignment statement - -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 - -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 - - 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 - -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 - , fix for Posix interp 888 - - 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 - -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 - - 7/28 - ---- -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 - - 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 - -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 - - 8/5 - --- -configure.ac - - release version is now `rc2' - -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 - - -command.h - - W_COMPLETE: new flag word value - - PF_COMPLETE: new flags value for param_expand - -subst.h - - SX_STRIPDQ: new flag, used for string_extract_double_quoted - -bashline.c - - bash_filename_stat_hook,bash_directory_completion_hook: pass W_COMPLETE - flag to expand_prompt_string - -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 - - - 8/9 - --- -[bash-4.4-rc2 frozen] - - 8/10 - ---- -subst.c - - sub_append_string: use size_t variable to store string length to - avoid integer overflow. Report from Siteshwar Vashisht - - - sub_append_string: `size' argument is now pointer to size_t; changed - istring_index in expand_word_internal to accommodate change - -lib/sh/ufuncs.c - - include "posixselect.h" if HAVE_SELECT is defined, make sure that - fd_set and the rest are defined - - 8/11 - ---- -lib/readline/histexpand.c - - history_tokenize_word: use ISDIGIT instead of isdigit for more - argument checking - - "chardefs.h": include for ISDIGIT define and . Fix from - Mike Frysinger - -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 - -lib/glob/glob.c - - sh_eaccess: change local prototype - -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 - -configure.ac,config.h.in - - uintptr_t: make sure it's defined to an integer type wide enough to - hold a pointer - -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 - -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 - - 8/19 - ---- -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 - - - xtrace_print_select_command_head: call xtrace_print_word_list with - flags argument of 2 - - 8/21 - ---- -lib/sh/netopen.c - - netopen: fix memory leak by freeing allocated path before error - return. Fix from Dmitry Goncharov - -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 - - 8/22 - ---- -braces.c - - expand_amble: free partial and tem on failure to allocate memory - for merged partial+result strvec. Fix from Dmitry Goncharov - - - 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 - - - 8/24 - ---- -subst.c - - pat_subst: fix memory leak (mstr). Fix from Dmitry Goncharov - - - split_at_delims: fix memory leak (d2). Fix from Dmitry Goncharov - - - 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 - - -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() - -doc/{bash.1,bashref.texi} - - quote removal: add paragraph mentioning quote removal to beginning - of expansions section, referencing later paragraph. Report from - Michel Lanne - - 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 - - -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 - -parse.y - - parse_comsub: when parsing a here-document delimiter, make sure we - don't try to use `nestret' after freeing it. Fixes bug reported by - Franco Costantini - -[bash-4.4 frozen] - - 9/10 - ---- -trap.c - - run_debug_trap: only give the terminal to pipeline_pgrp if - subshell_environment doesn't include SUBSHELL_ASYNC|SUBSHELL_PIPE. - Fixes bug reported by Matthew Giassa - -execute_cmd.c - - execute_simple_command: if user_subshell is set, check and set - SUBSHELL_ASYNC if asynchronous is set as well as setting - SUBSHELL_PAREN - - 9/17 - ---- -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 - - 9/18 - ---- -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 - - print_deferred_heredocs: don't print heredoc headers, since they're - now printed in print_redirection_list - - print_deferred_heredocs: use print_heredoc_bodies - - 9/20 - ---- -builtins/mapfile.def - - readarray: update usage synopsis to include -d delim. Report and - fix from jhankins@homewood.k12.al.us - -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 - -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 - - 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 - - 9/21 - ---- -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 - - - 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 - - 9/23 - ---- -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 - - -builtins/declare.def - - local_builtin: allow `local --help' to work even when not executing - a function. Suggestion from Norm Abramovitz - - 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 - -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 - -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 - -arrayfunc.h - - unbind_array_element: updated prototype - -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 [/] - -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 and followup from - Christian Franke - -variables.c - - all_array_variables: include associative arrays, not just indexed - arrays. Reported by Grisha Levit - -execute_cmd.c - - 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 - - -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 - - -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 - - -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 - -jobs.c - - 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 - - - 9/26 - ---- -subst.c - - read_comsub: only warn once for null bytes in command substitution - output, instead of once for every null byte - -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 - -arrayfunc.h - - array_variable_{name,part}: added new argument to prototypes - - 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 and - Valentin Bajrami - -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 - -trap.h - - check_signals: new extern declaration - - trapped_signal_received: new extern declaration - -builtins/read.def - - 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 - -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 - - 9/30 - ---- -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 - - 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 - - 10/5 - ---- -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 - - - 10/6 - ---- -array.h - - array_first_index: new convenience define - -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 - - 10/7 - ---- -array.c - - array_remove: short-circuit if asked to remove index after max - index or before first index - - 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 - -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 - - 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 - -subst.c - - process_substitute: if make_child fails, make sure we call - restore_pipeline to undo the previous save_pipeline() - - 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 - -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 - -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 - - 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 - - 10/19 - ----- -variables.c - - get_bashpid: BASHPID is no longer readonly; assignments to it are - just ignored. - -doc/{bash.1,bashref.texi} - - BASHPID: note that assignments are ignored and unsetting BASHPID - causes it to lose its special properties - - 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 - -lib/readline/histfile.c - - chown: protect calls with HAVE_CHOWN. Fixes for MinGW{64,32} from - J. Peter Mugaas - -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 - -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 - -array.h - - lastref: move last-referenced pointer into each array struct, so all - arrays can have reference locality - -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 - -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 - - 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 - - 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/{bash.1,bashref.texi} - - EPOCHSECONDS documentation - - EPOCHREALTIME documentation - -execute_cmd.c - - decpoint: moved to locale.c, renamed locale_decpoint; changed callers - -{bashintl,externs}.h - - locale_decpoint: extern declaration or #define if support for - localeconv() not there - - 10/31 - ----- -lib/malloc/malloc.c - - posix_memalign: add new posix-mandated interface - -examples/loadables/rm.c - - rm: minimal loadable builtin, removes files and directories, only - handles -r and -f options. Original from Tim Ruehsen - , heavily rewritten for inclusion as loadable - -examples/loadables/Makefile.in - - rm: add rules to build rm as one of the `other' targets - -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 - ---- -variables.c - - BASH_ARGV0: new dynamic variable, returns $0 on reference and sets - $0 on assignment. From a suggestion from Rocky Bernstein - a few years ago - -doc/{bash.1,bashref.texi} - - BASH_ARGV0: document - - 11/2 - ---- -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 - - 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 - -jobs.c - - discard_last_procsub_child: new function, safely discards - last_procsub_child and sets it to NULL - -subst.c - - process_substitute: call discard_last_procsub_child instead of - calling discard_pipeline directly. Fixes bug reported by - Christian Weisgerber - - 11/3 - ---- -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 - -examples/loadables/rm.c - - if we see the -i option, return EX_DISKFALLBACK - -execute_cmd.c - - execute_simple_command: if executing a builtin returns EX_DISKFALLBACK, - try running execute_disk_command instead - -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 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 - - 11/4 - ---- -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 - - _rl_peek_macro_key: extern declaration - -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 - -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 - - 11/5 - ---- -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 - -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 - -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 - - 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 - -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 - -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 - -subst.c - - 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 - -test.c - - unary_test: make sure if we test -v array[@] or array[*] that we - free the return value from array_value - - 11/8 - ---- -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 - -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 - - - optimize_subshell_command: ditto - - 11/9 - ---- -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 - -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 - - 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 - - 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 - - malloc_usable_size: return the maximum number of bytes available for - a particular memory allocation (size of block allocated for it) - - 11/12 - ----- -configure.ac - - changes to make --enable-profiling work on Linux (-pg, no static link, - no -static in LDFLAGS) - -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) - -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/display.c - - rl_redisplay: handle report of potential integer overflow in - horizontal display mode from Mateusz Lenik - -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/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/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 - - 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/readiline/rlprivate.h - - _rl_init_locale: new extern declaration - -lib/readline/readline.c - - rl_initialize: if not initializing everything the first time, call - _rl_init_locale to check current locale and set _rl_utf8locale - -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 - -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 - - 11/17 - ----- -lib/readline/histlib.h - - PATTERN_SEARCH: new flag for history search interfaces, means to - search for a pattern as Posix specifies - -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 - -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) - -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 - - 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 - - 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 - - 11/19 - ----- -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 - - 11/20 - ----- -builtins/common.c - - display_signal_list: make `kill -l 0' print `EXIT', modifying change - from 9/17 - - 11/21 - ----- -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 <\> and - skip to the end of string processing. Fixes oob-read error - reported by Jerzy Kramarz - -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 - - - ANDOR: check s[1] before checking s[2] in case s[1] == end of string. - Fixes oob-read error reported by Jerzy Kramarz - -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 - - 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 - - -bashhist.h - - HISTEXPAND_DEFAULT: default value of history_expansion, moved here - from flags.c - -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 - -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 - -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 - - 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 - - 11/25 - ----- -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 - - 11/27 - ----- -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 - - 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 - -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 - - 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 - - -lib/readline/doc/rluser.texi - - history-substring-search-forward: was misspelled as "substr-search"; - ditto for search-backward - -doc/bash.1 - - history-substring-search-{backward,forward}: add documentation, text - straight from readline.3 - -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 - - 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 - - -tests/execscript - - use $PWD/exec8.sub to protect against someone who has a cd command - in his bashrc. Report from Vladimir Marek - - - 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 - - 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 - - parameter_brace_expand_indir: clean up checks for unset variables to - minimize incompatibilities with previous versions - - 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 - -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 - -Makefile.in - - bashbug: use `^' as the sed delimiter instead of `%'; some compilers - use `%' in CFLAGS. Report from Vladimir Marek - - - 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 - - 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 - - 12/12 - ----- -lib/sh/shquote.c - - sh_backslash_quote: if FLAGS&2, backslash-quote other single-byte - characters that are in the current locale's character class - -builtins/printf.def - - printf_builtin: when processing the `%q' format, make sure to - backslash quote all 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 - - -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 - -config.h.in - - DEV_FD_STAT_BROKEN: add define - -configure.ac - - --enable-dev-fd-stat-broken: new command-line option, defines - DEV_FD_STAT_BROKEN if supplied at configure time - -doc/bashref.texi - - --enable-dev-fd-stat-broken: document new command-line option for - configure - -arrayfunc.c - - assoc_expand_once: new variable, declared here just because - -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/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) - -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 - -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 - - EXP_EXPANDED, new flag for second argument to evalexp - -builtins/let.def - - let_builtin: add EXP_EXPANDED to flags passed to evalexp - -execute_cmd.c - - 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 - -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 - -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] - - 12/14 - ----- -subst.h - - ASS_NOEXPAND: assignment flag that inhibits expansion of associative - array subscripts - -variables.c - - 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 - - bind_int_variable: updated extern declaration with new flags arg - -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 - -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 - -subst.c - - param_expand: call evalexp with EXP_EXPANDED flag for arithmetic - substitution because the string has already been expanded with - expand_arith_string - - 12/15 - ----- -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 - -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 - -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 - ----- -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 - -doc/bash.1,lib/readline/doc/hsuser.texi - - documented new behavior of negative offsets for `history -d' - - 12/17 - ----- -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/19 - ----- -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 - -lib/readline/history.h - - remove_history_range: extern declaration - - 12/20 - ----- -execute_cmd.c - - eval_arith_for_expr: pass EXP_EXPANDED to evalexp, since we run the - expression through expand_words_no_vars - - 12/21 - ----- -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 - - 12/22 - ----- -arrayfunc.[ch],subst.c - - array_expand_index: added new FLAGS argument, reserved for future use, - changed callers - - - 12/24 - ----- -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 - - 12/27 - ----- -builtins/help.def - - help_builtin: don't pass return value from ngettext() directly to - printf - - 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 back in 10/2016 - - 12/30 - ----- -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 - -command.h - - subshell_com: now has a line number member: line - -make_cmd.c - - make_subshell_command: assign current line number (line number of the - ending right paren) to `line' member - -copy_cmd.c - - copy_subshell_command: copy the `line' member - -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 - - 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 - - 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 - -variables.c - - bind_variable_internal: move can_optimize_assignment call to the - right place - - 12/31 - ----- -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 - - 1/2/2017 - -------- -{expr,general,hashcmd}.c - - include flags.h for flag values - -make_cmd.c - - include shell.h instead of the files it includes - -flags.h - - new extern declarations for want_pending_command, read_from_stdin - -subst.h - - add extern declaration for expanding_redir, assigning_in_environment - -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 - -shell.h - - added extern declarations for variables declared in shell.c, - changed files that declare lots of extern variables - -parser.h - - added extern declarations for variables declared in parse.y, - changed files that declare lots of extern variables - -[lots of changes to reduce the number of extern declarations in C and DEF files] - -parse.y - - xparse_dolparen: need ALIAS or DPAREN_ARITHMETIC to be defined to - use STRING_SAVER - - 1/3 - --- -sig.c - - 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 - -jobs.c - - end_job_control: only attempt to give the terminal back to - original_pgrp if job_control != 0; don't test interactive_shell - -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 - - 1/16 - ---- -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 - -lib/glob/glob_loop.c - - CHAR -> GCHAR (unsigned char); change uses of CHAR to GCHAR - -lib/glob/glob.c - - wchkname -> wskipname - - wskipname: now takes a third `flags' argument, like the other variants - of skipname - - 1/17 - ---- -redir.c - - 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 - - 1/18 - ---- -{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 - ---- -lib/readline/complete.c - - stat_char: fix small memory leak if stat/lstat returns -1 - -bashline.c - - 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 - -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 - - 1/23 - ---- -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 - -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 - -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 - - 1/30 - ---- -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 - - parse_matched_pair: do the same thing with LEX_WASDOL - - 2/1 - --- -jobs.h - - JWAIT_PERROR,JWAIT_FORCE: new defines for the wait_for_ family of - functions - -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 - -builtins/wait.def - - takes a new `-f' option, signifying to wait until the specified job - or process terminates, instead of changes state - -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/2 - --- -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 - - - 2/3 - --- - -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 - -lib/readline/readline.h - - rl_{next,previous}_screen_line: extern declarations - -lib/readline/funmap.c - - {next,previous}-screen-line: new bindable command names - -lib/readline/doc/{rluser.texi,readline.3} - - {next,previous}-screen-line: document behavior, including limitations - - 2/5 - --- -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 - - - 2/6 - --- -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 - -eval.c - - pretty_print_loop: new function, similar to reader_loop, reads - commands and prints them by displaying the result from - make_command_string() - -externs.h - - pretty_print_loop: new extern declaration - - 2/9 - --- -doc/{bash.1,bashref.texi} - - here strings: correct documentation to note they do not undergo - brace expansion. Report from Conor McCarthy - - 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 - - 2/11 - ---- -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 - 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 , patch was originally - contributed by Geir Hauge - - 2/15 - ---- -jobs.c - - 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 - - 2/17 - ---- -subst.c - - 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 - - -config-top.h - - STATIC_PATH_VALUE: new config variable, undefined by default - -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 - - 2/18 - ---- -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 - -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 - - 2/19 - ---- -subst.c - - 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 - - 2/20 - ---- -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} - -jobs.c - - 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 - - 2/21 - ---- -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 - -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 - -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 - - 2/22 - ---- -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 - -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 - -execute_cmd.c - - 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 - - 2/23 - ---- -general.c - - make_absolute: convert deprecated cygwin_conv_to_full_posix_path - to cygwin_conv_path (CCP_WIN_A_TO_POSIX, ...) - -{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 - - 2/24 - ---- -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 - - 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 - - bind_comp_words: if COMP_WORDS exists as a nameref variable, ignore - the nameref attribute. Report from Grisha Levit - - -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 , because otherwise - *contains_dollar_at gets set to 1 and the word is inappropriately - split - - 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) - - 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 - -lib/glob/smatch.c - - is_cclass: broke into two functions: is_valid_cclass and cclass_test, - for future expansion. No functionality change - -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 - - 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 - - - 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) - - 3/10 - ---- -lib/readline/readline.c - - bind_arrow_keys_internal: add default key bindings for control- - arrow keys, suggested by Per Bothner - - 3/13 - ---- -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 - - - 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 - -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 - - 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 - -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 - -execute_cmd.h - - undo_partial_redirects: extern declaration - - dispose_partial_redirects: extern declaration - -subst.c - - 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 - -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 - - - 3/16 - ---- -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 - -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 - - 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 - -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 - - 3/21 - ---- -subst.h - - ASS_NOEVAL, ASS_NOLONGJMP: new values for assignments, used by - make_variable_value - -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 - -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 - - 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 - - - 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 - - -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 - - 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 - - 3/30 - ---- -subst.c - - 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 - - 3/31 - ---- -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 - - 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 - - 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 - - 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 - -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 - -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 - - 4/4 - --- -doc/{bash.1,bashref.texi} - - read: document that a delim argument of '' terminates each line when - a NUL character appears - - 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 - - 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 - - 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 - - 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 - - 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 - -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 - -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 - -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 - - - 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 - -variables.c - - 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 - - -subst.[ch] - - quote_escapes,dequote_escapes: now take const char * argument - -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 - - 4/11 - ---- -eval.c - - reader_loop: make sure PS0 is expanded and displayed before - incrementing the command number - -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 - - - 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 - - 4/12 - ---- -support/Makefile.in - - clean: remove man2html.o as part of this production instead of - waiting until `distclean'. Reported by chrlis - -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 - . This undoes change to @Q from 4/7, so - list_transform change reverted - - 4/19 - ---- -builtins.h - - added BUILTINS_H include guard - -examples/loadables/Makefile.in - - install loadables.h as sample include file, along with Makefile.inc - - 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 , - fix from Eduardo Bustamante - - 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 - - 4/25 - ---- -doc/{bash.1,bashref.texi} - - cmdhist: clarify that this option only has an effect if history is - enabled. Suggested by Matthew Braun - - 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 - - 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 - - -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 - - 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 - - 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. - - 5/2 - --- -lib/readline/bind.c - - rl_translate_keyseq: make sure a trailing backslash in the key - sequence is preserved. Report from Eduardo Bustamante - - - 5/3 - --- -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 - -jobs.c - - waitchld: modify change of 4/26 to run SIGCHLD traps even if job - control is not enabled - -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 - - - rl_get_{next,previous}_history: if there is no history list, don't - bother doing anything - - 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 - , happens only in cases where we don't longjmp on - a fatal expansion error - - 5/5 - --- -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 - -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 - - -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 - - 5/6 - --- -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 - - - 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 - -lib/readline/input.c - - MinGW: include before . Fix from Eli Zaretskii - - -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 - - 5/9 - --- -parse.y - - 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 - - 5/10 - ---- -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 - - 5/12 - ---- -lib/readline/rlmbutil.h - - wchar_t: make sure this is defined as int if multibyte characters - aren't supported - -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 - - 5/14 - ---- -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 - -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 - - 5/15 - ---- -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 - - - 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 - - 5/16 - ---- -bashline.c - - 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 - -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 - -examples/bash-completion/ - - new place to include a current or recent version of the - bash-completion package - - 5/19 - ---- -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 - - 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 - - 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 - -builtins/shopt.def - - localvar_inherit: new option - -doc/{bash.1,bashref.texi} - - localvar_inherit: document new shopt option - - 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 - -lib/readline/histfile.c - - read_history_range: if the file isn't a regular file, return an - error. Bug report from Eduardo Bustamante , - relaying from IRC - - 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 - - - 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 , relaying from IRC - - 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 - -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 - -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 - - 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 - - 6/7 - --- -lib/readline/histlib.h - - strchr: only declare if __STDC__ is not defined, since we already - include . Report from Chi-Hsuan Yen - - 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 - -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 - - 6/12 - ---- -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 - - 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. - - 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 - -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 - -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 - -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/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/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 - - 6/16 - ---- -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 - - 6/17 - ---- -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 - - 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 - - -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 - - -lib/readline/vi_mode.c - - _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 - -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 - -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 - -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 - - 6/19 - ---- -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 - -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 - - -general.c - - line_isblank: new function: returns true if passed string is composed - entirely of blanks - -general.h - - line_isblank: new extern declaration - -parse.y - - history_delimiting_chars: return "" for a blank line, since there's - nothing to delimit with `;' - - 6/21 - ---- -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 - -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 - -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 - - - 6/23 - ---- -doc/{bash.1,bashref.texi} - - add text noting that $* and ${array[*]} (unquoted) can also expand - to multiple words - - 6/29 - ---- -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 - - select_query: use default_columns() instead of fetching value of - COLUMNS directly - -builtins/help.def - - show_builtin_command_help: use default_columns() instead of fetching - value of COLUMNS directly - - 6/30 - ---- -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 - - 7/4 - --- -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 - back on 2/28/2017 - -bashline.c - - operate_and_get_next: if given an explicit argument, use that to - choose which line in the history to use. - -lib/readline/doc/rluser.texi,doc/bash.1 - - operate-and-get-next: document new effect of explicit numeric arg - -lib/readline/complete.c - - fnprint: make sure print_len is initialized before using it on - systems without multibyte character support. Report and fix from - Juan Manuel Guerrero - - 7/6 - --- -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 - - 7/7 - --- -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 . 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 - -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 - - 7/8 - --- -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 - - 7/11 - ---- -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 - - 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 - - 9/10 - ---- -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 - - 9/17 - ---- -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 - - - 9/27 - ---- -{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 - -builtins/read.def,variables.c - - fixed a couple of problems (READLINE, ARRAY_VARS) that prevented - the minimal config from building - - 10/1 - ---- -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 - - - 10/4 - ---- -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 - - - 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 - - -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 - -subst.c - - 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 - - 10/6 - ---- -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 - - 10/7 - ---- -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 - - - 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 - - 10/21 - ----- -subst.c - - expand_string_for_rhs: set W_NOASSNTILDE if the operator is `=' - for backwards compatibility with bash-4.4 - -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 - - 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 - -parse.y - - 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 , the result of a fuzzing test. Pointer - to place for the fix from Eduardo Bustamante - - 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 - -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 - - 11/1 - ---- -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 - - - 11/3 - ---- -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. - - 11/7 - ---- -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 - https://savannah.gnu.org/support/?109403 - - 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 ; fix - from Eduardo Bustamante - - 11/16 - ----- -subst.c - - 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 , originally based on - http://lists.gnu.org/archive/html/bug-bash/2017-11/msg00047.html - - 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 - -lib/readline/readline.h - - rl_empty_keymap: new public extern declaration - -lib/readline/doc/rltech.texi - - rl_empty_keymap: document new function - -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 - - 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 - - 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 - - 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 - -lib/readline/readline.h - - rl_check_signals: new extern declaration - -lib/readline/doc/rltech.texi - - rl_check_signals: document new public function - -variables.c - - 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 - -config-top.h - - OLDPWD_CHECK_DIRECTORY: new define, defined to 1 by default - - 11/29 - ----- -Makefile.in - - pathexp.o: add dependencies on libintl.h. Reported by - Ross Burton - - 12/1 - ---- -lib/sh/ufuncs.c - - fsleep: add blocking and releasing SIGCHLD using sigprocmask - around call to select(2) even if pselect(2) is not available - - 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 - - 12/5 - ---- -subst.c - - 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 - -subst.h - - find_procsub_child,set_procsub_status,reap_procsubs: extern - declarations - -nojobs.c - - set_pid_status: if we are reaping a process substitution, call - set_procsub_status to record the fact - -jobs.c - - waitchld: if we are reaping a process substitution, call - set_procsub_status to record the fact. Doesn't really do anything - yet - - 12/6 - ---- -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 - - - 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 - - 12/7 - ---- -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 - - 12/8 - ---- -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 - -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 - -execute_cmd.c - - 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 - - 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 - -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 - - 12/9 - ---- -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 - -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) - -tests/{run-procsub,procsub.{tests,right}} - - new file, tests of process substitution that have failed in the past - - 12/10 - ----- -jobs.c - - wait_for_background_pids: warn if one of the jobs is stopped - -subst.c - - wait_procsubs: new function, call wait_for for every "live" process - substitution - -jobs.c - - wait_for_background_pids: call wait_procsubs to reap any living - process subsitutions - - 12/13 - ----- -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]] - - 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. - - 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 - - 12/17 - ----- -array.h - - set_element_value: new define, sets array element AE to VALUE - -variables.c - - set_pipestatus_array: use set_element_value where appropriate - - 12/18 - ----- -subst.c - - 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 - - 12/19 - ----- -doc/{bash.1,bashref.texi} - - 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 - - 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 - - -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 - - -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 - ----- -array.c,arrayfunc.c,... - - many changes to clean up unused variables and functions. From a - report from Siteshwar Vashisht - - 12/28 - ----- -lib/readline/terminal.c - - _rl_term_clrscroll: save the `E3' termcap capability, which clears - the scrollback buffer where supported. Unused right now - -lib/readline/rlprivate.h - - _rl_term_clrscroll: extern declaration - -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 - -doc/bash.1,lib/readline/doc/{rluser.texi,readline.3} - - document new `if variable comparison value' construct - - 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 - - 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. - -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 ; final piece of - fix from 12/15/2011 - - 1/4 - --- -subst.c - - param_expand: deal with string_list_dollar_star returning NULL. - Fixes bug reported by Martijn Dekker - -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/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 - -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 - - 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 - - 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() - -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 - - 1/14 - ---- -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 - -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_*) - - 1/15 - ---- -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.) - - 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 - - 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 - - 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 - -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 - - 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 - -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 - -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 - - 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 - - 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 - -doc/{bash.1,bashref.texi} - - shopt: document `assoc_expand_once' shell option - - 2/1 - --- -config-top.h - - DONT_REPORT_SIGPIPE: define, so non-interactive shells will no - longer print termination messages for child processes killed by - SIGTERM - - 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) - -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 - - do_redirection_internal: if redir_open returns RESTRICTED_REDIRECT, - return that right away (instead of errno) so we can print a better - error message - - 2/11 - ---- -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 - based on his patch from 12/8. - - bgp_resize: cap max table size for bgpids at MAX_CHILD_MAX (32768) - -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 - -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 - - 2/15 - ---- -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 + - 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 -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 - - 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 + 5/10 + ---- 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 + - 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. -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 +[bash-5.0-alpha frozen] - 2/16 + 5/12 ---- execute_cmd.c - - execute_function: make sure BASH_ARGV and BASH_ARGC are initialized - before calling push_args (and before calling remember_args) + - 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 -builtins/source.def - - source_builtin: make sure BASH_ARGV and BASH_ARGC are initialized - before calling push_args (and before calling remember_args) + 5/24 + ---- +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 -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 +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 -builtins/shopt.def - - compat44: new shell option. This will be the last compatXX option +lib/readline/mbutil.c + - _rl_utf8_mblen: utf-8 specific version of mblen from gnulib -doc/{bash.1,bashref.texi} - - compat44: document new shell option +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) - 2/21 + 5/25 ---- -builtins/common.h - - ISOPTION: check s[1] before s[2] to avoid out of bound reads. Fixes - bug reported by jeremy@feusi.co +lib/sh/utf8.c + - new file, utf-8-specific functions collected from other files -input.h - - B_SHAREDBUF: new flag for buffered input fds, indicates that this - fd shares its b_buffer with another fd +externs.h + - extern declarations moved around for utf8.c -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 +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 + +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 + +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 + +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 - 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 + - 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 - 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 - +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 back in March, 2018 - 3/11 +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 ---- 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 back - on 2/11/2018 + - assign_aliasvar: perform same validity check on subscript assignment + as alias builtin performs on name argument. Bug report from + Mike Jonkmans - 3/13 + 5/29 ---- -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 +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 - 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 + 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 -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 +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 - 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 + 6/4 + --- +configure.ac + - make sure we link against an external readline library that's at + least version 8 -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 + 6/8 + --- +pcomplete.h + - INITIALWORD: internal compspec name for programmable completion on + the initial (usually the command) word - 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 +bashline.c + - 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 - 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 - - rl_function_of_keyseq_len: new application-callable function that - takes a length parameter; otherwise equivalent to rl_function_of_keyseq. +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 -lib/readline/readline.h - - rl_function_of_keyseq_len: add extern declration for new function +builtins/complete.def + - complete_builtin,compgen_builtin: add support for -I option + - print_one_completion,print_compopts: display -I when appropriate -lib/readline/doc/rltech.texi - - rl_function_of_keyseq_len: document new function interface +lib/readline/doc/rluser.texi,doc/bash.1 + - complete,compgen: document new -I option and its effect + + 6/10 + ---- +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 + 6/12 + ---- bashline.c - - bash_execute_unix_command: use rl_function_of_keyseq_len to handle - key sequences with embedded NULs (\C-@). Fix from Koichi Murase - + - 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 -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 + 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/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 - + 6/22 + ---- +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 -execute_cmd.c - - 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 ÐиÑиллов Ðима - - 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 + 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 - 4/4 + 7/4 --- -subst.c - - 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 - +bashline.c + - 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 + +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 + +lib/readline/history.h + - history_quoting_state: extern declaration + +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 - 4/6 - --- 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 - + - shell_getc: set history_quoting_state based on the contents of the + current delimiter before calling pre_process_line - 4/7 + 7/6 --- -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 +lib/readline/doc/hsuser.texi + - describe the default behavior of backslash and single and double + quotes - 4/9 +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 + + 7/9 --- -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 +support/man2html.c + - unescape: use memmove instead of strcpy to handle overlapping strings + Report and fix from Bernhard M. Wiedemann + +lib/sh/getenv.c + - getenv: check that environ is non-NULL before looking through it. + Report and fix from Keeley Hoek + + 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 + as the result of fuzzing + +builtins/declare.def + - 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 +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 + -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 +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) +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 - 4/11 + 7/15 ---- -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 - +doc/{bash.1,bashref.texi} + - indirect expansion: clarify that the expansion works on parameters, + not just variables (NAMEs). Suggested by konsolebox + -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 + 7/16 + ---- +doc/{bash.1,bashref.texi} + - INSIDE_EMACS: document its effect on line editing - 4/12 + 7/17 ---- -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 +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 -builtins/common.h - - parse_and_execute_cleanup: changed prototype +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 - 4/13 - ---- -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 +variables.c + - 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 -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 +variables.h + - make_local_assoc_variable: change function prototype to add second + arg - 4/18 - ---- -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 +{subst.c,variables.c} + - make_local_assoc_variable: change callers - 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 +builtins/declare.def + - 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 + + - declare_internal: call make_local_array_variable with unconditional + second argument of 1 for the same reason as above - 4/26 + 7/18 ---- -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 +variables.c + - 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 -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 +test.c + - unary_test: rearrange code slightly to avoid a wasted variable lookup + if the argument to -v is a subscripted array reference - 4/27 + 7/19 ---- 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 + - 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 -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 +variables.h + - nameref_transform_name: extern declaration -lib/glob/gm_loop.c - - INTERNAL_GLOB_PATTERN_P: same change to return TRUE for a backslash - that doesn't end the pattern +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 + -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 - +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 + -lib/sh/clock.c - - print_clock_t: use locale_depoint() in the same way as print_timeval + 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. - 4/29 +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 + +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 + +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 + + 7/25 ---- + 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 - + - 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 + - 4/30 + 7/29 ---- -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 +subst.c + - get_var_and_type: if VALUE is NULL, check before calling dequote_string. + Report and fix from Grisha Levit - 5/2 - --- + 7/30 + ---- variables.c - - 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 + - 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 + - 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 + - 5/3 + 8/2 --- -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 - +array.c + - array_subrange: change to use string_list_pos_params after creating a + WORD_LIST from the array slice, like assoc_subrange does - 5/4 +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 + + 8/3 --- -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 +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} - 5/7 +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} + +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 + + 8/6 --- -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 +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 ${*,,} -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 +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 ${*,,} -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 +subst.c + - 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 - 5/10 + 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 + + 8/9 + --- +configure.ac + - globasciiranges: RRI now on by default, must be turned off explicitly + at configure time or runtime with `shopt -u globasciiranges' + + 8/14 ---- +variables.c + - dispose_saved_dollar_vars: decrement stack pointer before looking + for saved positional parameters to dispose; stack pointer always + points to the first unused slot + 8/15 + ---- 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. + - 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 + - {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 -[bash-5.0-alpha frozen] +doc/{bash.1,bashref.texi} + - POSIXLY_CORRECT: make sure to note that bash makes sure this variable + is set when posix mode is enabled + + 8/17 + ---- +{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. + +jobs.h + - set_jobs_list_frozen: extern declaration + +execute_cmd.c + - 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 + + 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 + + 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 + + 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 + +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 + + 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) + + 9/7 + --- +configure.ac + - changed release status to `beta' + + 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 + + +configure.ac + - openbsd needs DEV_FD_STAT_BROKEN defined + +[bash-5.0-beta frozen] diff --git a/INSTALL b/INSTALL index 9d5dee0be..91f1dd9a7 100644 --- a/INSTALL +++ b/INSTALL @@ -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. diff --git a/MANIFEST b/MANIFEST index 56528b5bf..2b267561b 100644 --- a/MANIFEST +++ b/MANIFEST @@ -453,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 @@ -868,6 +869,7 @@ tests/array22.sub f tests/array23.sub f tests/array24.sub f tests/array25.sub f +tests/array26.sub f tests/array-at-star f tests/array2.right f tests/assoc.tests f @@ -881,6 +883,7 @@ 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 @@ -1072,6 +1075,8 @@ 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 @@ -1136,6 +1141,8 @@ 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 @@ -1179,6 +1186,7 @@ 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 @@ -1199,6 +1207,7 @@ 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 @@ -1352,7 +1361,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 @@ -1365,6 +1374,10 @@ 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 diff --git a/Makefile.in b/Makefile.in index 0e6c948eb..5fcb44b01 100644 --- a/Makefile.in +++ b/Makefile.in @@ -1,4 +1,4 @@ -# Makefile for bash-5.0, version 4.25 +# Makefile for bash-5.0, version 4.27 # # Copyright (C) 1996-2018 Free Software Foundation, Inc. @@ -41,6 +41,7 @@ infodir = @infodir@ includedir = @includedir@ datadir = @datadir@ localedir = @localedir@ +pkgconfigdir = ${libdir}/pkgconfig loadablesdir = @loadablesdir@ headersdir = @headersdir@ @@ -230,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 @@ -834,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 \ @@ -849,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 diff --git a/NEWS b/NEWS index 66cbf97dc..1ef109f36 100644 --- a/NEWS +++ b/NEWS @@ -85,6 +85,31 @@ z. The `times' builtin now honors the current locale when printing a decimal 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. + 2. New Features in Readline a. Non-incremental vi-mode search (`N', `n') can search for a shell pattern, as @@ -112,6 +137,14 @@ g. There is a simple variable comparison facility available for use within an 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. + ------------------------------------------------------------------------------- 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 diff --git a/POSIX b/POSIX index 17b41c6f3..67d8ddf89 100644 --- a/POSIX +++ b/POSIX @@ -11,212 +11,214 @@ 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. 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 + 45. 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 + 46. 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 + 47. 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 + 48. 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 + 49. 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'. + 50. The default editor used by 'fc' is 'ed'. - 50. The 'type' and 'command' builtins will not report a non-executable + 51. 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 + 52. 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 + 53. 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' + 54. 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 + 55. 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 + 56. 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 + 57. 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/aclocal.m4 b/aclocal.m4 index 6ea6f40f9..6ed03e10b 100644 --- a/aclocal.m4 +++ b/aclocal.m4 @@ -1307,7 +1307,7 @@ AC_CACHE_VAL(bash_cv_must_reinstall_sighandlers, typedef RETSIGTYPE sigfunc(); -int nsigint; +volatile int nsigint; #ifdef HAVE_POSIX_SIGNALS sigfunc * diff --git a/array.c b/array.c index 5f7d72f13..bca18c544 100644 --- a/array.c +++ b/array.c @@ -406,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)) @@ -432,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; } @@ -468,50 +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); - if ((mflags & MATCH_QUOTED) == 0 && ifs_is_null) - sifs = spacesep; - else - sifs = ifs_firstchar((int *)NULL); - t = array_to_string (a2, sifs, 0); - if (sifs != spacesep) - 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; } @@ -523,53 +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); - if ((mflags & MATCH_QUOTED) == 0 && ifs_is_null) - sifs = spacesep; - else - sifs = ifs_firstchar((int *)NULL); - t = array_to_string (a2, sifs, 0); - if (sifs != spacesep) - 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. diff --git a/arrayfunc.c b/arrayfunc.c index 10b2b06a3..e3700dd3e 100644 --- a/arrayfunc.c +++ b/arrayfunc.c @@ -199,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); } diff --git a/assoc.c b/assoc.c index 84a387c20..673eccb22 100644 --- 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; } diff --git a/bashhist.c b/bashhist.c index e0afe52ac..7912cce31 100644 --- a/bashhist.c +++ b/bashhist.c @@ -60,6 +60,10 @@ 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 @@ -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. */ @@ -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")); @@ -545,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) { diff --git a/bashline.c b/bashline.c index ae8fe1ccc..2b080197e 100644 --- a/bashline.c +++ b/bashline.c @@ -1426,6 +1426,7 @@ attempt_shell_completion (text, start, end) char **matches, *command_separator_chars; #if defined (PROGRAMMABLE_COMPLETION) int have_progcomps, was_assignment; + COMPSPEC *iw_compspec; #endif command_separator_chars = COMMAND_SEPARATORS; @@ -1510,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; @@ -1564,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) @@ -1589,8 +1592,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) { @@ -1599,6 +1602,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 diff --git a/braces.c b/braces.c index 315c62f1f..2a255c781 100644 --- 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. @@ -420,9 +420,9 @@ 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) { @@ -778,7 +778,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++) diff --git a/builtins/common.c b/builtins/common.c index 0752f0d6d..00be24ea0 100644 --- a/builtins/common.c +++ b/builtins/common.c @@ -678,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; diff --git a/builtins/complete.def b/builtins/complete.def index 3ca8c1fae..1ea308bd4 100644 --- a/builtins/complete.def +++ b/builtins/complete.def @@ -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 intial (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)) @@ -564,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); @@ -608,10 +632,12 @@ print_compopts (cmd, cs, full) 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); } @@ -769,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, @@ -780,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. @@ -800,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; @@ -829,6 +856,9 @@ compopt_builtin (list) case 'E': Eflag = 1; break; + case 'I': + Iflag = 1; + break; CASE_HELPOPT; default: builtin_usage (); @@ -837,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) { diff --git a/builtins/declare.def b/builtins/declare.def index 2574eba4d..7eac6f583 100644 --- a/builtins/declare.def +++ b/builtins/declare.def @@ -440,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 @@ -471,7 +490,8 @@ restart_new_var_name: } else /* XXX - check name for validity here with valid_nameref_value */ - var = make_local_variable (name, 0); /* 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++; @@ -623,14 +643,14 @@ 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) @@ -939,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); diff --git a/builtins/printf.def b/builtins/printf.def index fc0892918..1f76c25f7 100644 --- a/builtins/printf.def +++ b/builtins/printf.def @@ -1198,8 +1198,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) @@ -1227,8 +1229,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) diff --git a/builtins/read.def b/builtins/read.def index 584ff70a4..a73905c37 100644 --- a/builtins/read.def +++ b/builtins/read.def @@ -705,6 +705,7 @@ add_char: } else # endif + if (locale_utf8locale == 0 || ((c & 0x80) != 0)) i += read_mbchar (fd, input_string, i, c, unbuffered_read); } #endif diff --git a/builtins/setattr.def b/builtins/setattr.def index 916515f87..c756964a0 100644 --- a/builtins/setattr.def +++ b/builtins/setattr.def @@ -560,18 +560,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); diff --git a/builtins/shopt.def b/builtins/shopt.def index 9b88aa446..d76b86697 100644 --- a/builtins/shopt.def +++ b/builtins/shopt.def @@ -110,6 +110,7 @@ extern int enable_hostname_completion __P((int)); #if defined (PROGRAMMABLE_COMPLETION) extern int prog_completion_enabled; +extern int progcomp_alias; #endif #if defined (DEBUGGER) @@ -219,7 +220,7 @@ static struct { { "lithist", &literal_history, (shopt_set_func_t *)NULL }, #endif { "localvar_inherit", &localvar_inherit, (shopt_set_func_t *)NULL }, -#if 0 +#if 0 /* bash-5.0-beta */ { "localvar_unset", &localvar_unset, (shopt_set_func_t *)NULL }, #endif { "login_shell", &shopt_login_shell, set_login_shell }, @@ -232,6 +233,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 0 /* bash-5.0-beta */ + { "progcomp_alias", &progcomp_alias, (shopt_set_func_t *)NULL }, +# endif #endif { "promptvars", &promptvars, (shopt_set_func_t *)NULL }, #if defined (RESTRICTED_SHELL) diff --git a/command.h b/command.h index 856264405..32495162a 100644 --- a/command.h +++ b/command.h @@ -94,7 +94,7 @@ 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 */ diff --git a/config-top.h b/config-top.h index a7008bcaf..b1ed925f1 100644 --- a/config-top.h +++ b/config-top.h @@ -176,3 +176,7 @@ /* 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"*/ diff --git a/config.h.in b/config.h.in index 1e4b71d1e..aa0c0312c 100644 --- a/config.h.in +++ b/config.h.in @@ -1028,6 +1028,9 @@ /* Define if you have the header file. */ #undef HAVE_SYS_IOCTL_H +/* Define if you have the header file. */ +#undef HAVE_SYS_MMAN_H + /* Define if you have the header file. */ #undef HAVE_SYS_NDIR_H @@ -1167,6 +1170,9 @@ /* 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 diff --git a/configure b/configure index f0db2db73..dd4ff051e 100755 --- a/configure +++ b/configure @@ -1,7 +1,7 @@ #! /bin/sh -# From configure.ac for Bash 5.0, version 4.091. +# From configure.ac for Bash 5.0, version 5.002. # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for bash 5.0-alpha. +# Generated by GNU Autoconf 2.69 for bash 5.0-beta. # # Report bugs to . # @@ -581,8 +581,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='bash' PACKAGE_TARNAME='bash' -PACKAGE_VERSION='5.0-alpha' -PACKAGE_STRING='bash 5.0-alpha' +PACKAGE_VERSION='5.0-beta' +PACKAGE_STRING='bash 5.0-beta' PACKAGE_BUGREPORT='bug-bash@gnu.org' PACKAGE_URL='' @@ -1394,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 5.0-alpha to adapt to many kinds of systems. +\`configure' configures bash 5.0-beta to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1459,7 +1459,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of bash 5.0-alpha:";; + short | recursive ) echo "Configuration of bash 5.0-beta:";; esac cat <<\_ACEOF @@ -1655,7 +1655,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -bash configure 5.0-alpha +bash configure 5.0-beta generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2364,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 5.0-alpha, which was +It was created by bash $as_me 5.0-beta, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2759,7 +2759,7 @@ ac_config_headers="$ac_config_headers config.h" BASHVERS=5.0 -RELSTATUS=alpha +RELSTATUS=beta case "$RELSTATUS" in alp*|bet*|dev*|rc*|releng*|maint*) DEBUG='-DDEBUG' MALLOC_DEBUG='-DMALLOC_DEBUG' ;; @@ -2847,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 [67].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() @@ -2981,7 +2986,7 @@ 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 @@ -3004,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. @@ -5404,7 +5409,7 @@ fi case "$ac_cv_rl_version" in - 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;} @@ -9292,7 +9297,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` @@ -11046,7 +11051,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" @@ -15252,7 +15257,7 @@ else typedef RETSIGTYPE sigfunc(); -int nsigint; +volatile int nsigint; #ifdef HAVE_POSIX_SIGNALS sigfunc * @@ -16175,6 +16180,7 @@ linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading *) $as_echo "#define PGRP_PIPE 1" >>confdefs.h ;; esac ;; +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" ;; @@ -16815,7 +16821,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 5.0-alpha, which was +This file was extended by bash $as_me 5.0-beta, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -16881,7 +16887,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 5.0-alpha +bash config.status 5.0-beta configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/configure.ac b/configure.ac index d0ccffb46..5ead20165 100644 --- a/configure.ac +++ b/configure.ac @@ -5,7 +5,7 @@ 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,10 +21,10 @@ 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 . -AC_REVISION([for Bash 5.0, version 4.091])dnl +AC_REVISION([for Bash 5.0, version 5.002])dnl define(bashvers, 5.0) -define(relstatus, alpha) +define(relstatus, beta) 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 [67].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,7 +182,7 @@ 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 @@ -200,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) @@ -550,7 +555,7 @@ then RL_LIB_READLINE_VERSION case "$ac_cv_rl_version" in - 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]) @@ -714,7 +719,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) @@ -850,7 +855,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 @@ -1111,6 +1116,7 @@ linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading 1.*|2.[[0123]]*) : ;; *) AC_DEFINE(PGRP_PIPE) ;; esac ;; +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" ;; diff --git a/doc/bash.0 b/doc/bash.0 index bb2f7429a..d09b8fc0c 100644 --- a/doc/bash.0 +++ b/doc/bash.0 @@ -382,24 +382,24 @@ SSHHEELLLL GGRRAAMMMMAARR 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 expres- - sion and matched accordingly (as in _r_e_g_e_x(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 nnooccaasseemmaattcchh 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 - BBAASSHH__RREEMMAATTCCHH. The element of BBAASSHH__RREEMMAATTCCHH with index 0 is the - portion of the string matching the entire regular expression. - The element of BBAASSHH__RREEMMAATTCCHH 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 _r_e_g_e_x(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 nnooccaasseemmaattcchh 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 BBAASSHH__RREEMMAATTCCHH. The element of BBAASSHH__RREEMMAATTCCHH with index 0 + is the portion of the string matching the entire regular expres- + sion. The element of BBAASSHH__RREEMMAATTCCHH with index _n is the portion + of the string matching the _nth parenthesized subexpression. Expressions may be combined using the following operators, listed in decreasing order of precedence: @@ -735,80 +735,86 @@ PPAARRAAMMEETTEERRSS is the first character of the value of the IIFFSS variable. If IIFFSS is unset, the parameters are separated by spaces. If IIFFSS is null, the parameters are joined without intervening separators. - @@ Expands to the positional parameters, starting from one. When + @@ 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, "$$@@" is equivalent to "$$11" - "$$22" ... 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, "$$@@" and $$@@ expand to + "$$22" ... 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, "$$@@" and $$@@ expand to nothing (i.e., they are removed). ## Expands to the number of positional parameters in decimal. - ?? Expands to the exit status of the most recently executed fore- + ?? Expands to the exit status of the most recently executed fore- ground pipeline. - -- Expands to the current option flags as specified upon invoca- - tion, by the sseett builtin command, or those set by the shell + -- Expands to the current option flags as specified upon invoca- + tion, by the sseett builtin command, or those set by the shell itself (such as the --ii option). - $$ Expands to the process ID of the shell. In a () subshell, it - expands to the process ID of the current shell, not the sub- + $$ 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. - !! Expands to the process ID of the job most recently placed into - the background, whether executed as an asynchronous command or + !! Expands to the process ID of the job most recently placed into + the background, whether executed as an asynchronous command or using the bbgg builtin (see JJOOBB CCOONNTTRROOLL below). - 00 Expands to the name of the shell or shell script. This is set + 00 Expands to the name of the shell or shell script. This is set at shell initialization. If bbaasshh is invoked with a file of com- - mands, $$00 is set to the name of that file. If bbaasshh is started - with the --cc option, then $$00 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 bbaasshh, as given by argument + mands, $$00 is set to the name of that file. If bbaasshh is started + with the --cc option, then $$00 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 bbaasshh, 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 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 + __ 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- + ing mail, this parameter holds the name of the mail file cur- rently being checked. SShheellll VVaarriiaabblleess The following variables are set by the shell: - BBAASSHH Expands to the full filename used to invoke this instance of + BBAASSHH Expands to the full filename used to invoke this instance of bbaasshh. BBAASSHHOOPPTTSS - A colon-separated list of enabled shell options. Each word in - the list is a valid argument for the --ss option to the sshhoopptt + A colon-separated list of enabled shell options. Each word in + the list is a valid argument for the --ss option to the sshhoopptt builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options - appearing in BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. If - this variable is in the environment when bbaasshh starts up, each - shell option in the list will be enabled before reading any + appearing in BBAASSHHOOPPTTSS are those reported as _o_n by sshhoopptt. If + this variable is in the environment when bbaasshh starts up, each + shell option in the list will be enabled before reading any startup files. This variable is read-only. BBAASSHHPPIIDD - Expands to the process ID of the current bbaasshh process. This - differs from $$$$ under certain circumstances, such as subshells - that do not require bbaasshh to be re-initialized. Assignments to - BBAASSHHPPIIDD have no effect. If BBAASSHHPPIIDD is unset, it loses its spe- + Expands to the process ID of the current bbaasshh process. This + differs from $$$$ under certain circumstances, such as subshells + that do not require bbaasshh to be re-initialized. Assignments to + BBAASSHHPPIIDD have no effect. If BBAASSHHPPIIDD is unset, it loses its spe- cial properties, even if it is subsequently reset. BBAASSHH__AALLIIAASSEESS - An associative array variable whose members correspond to the - internal list of aliases as maintained by the aalliiaass builtin. - Elements added to this array appear in the alias list; 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 aalliiaass 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 BBAASSHH__AALLIIAASSEESS is unset, it loses its special properties, even if it is subsequently reset. BBAASSHH__AARRGGCC - An array variable whose values are the number of parameters in + An array variable whose values are the number of parameters in each frame of the current bbaasshh execution call stack. The number - of parameters to the current subroutine (shell function or - script executed with .. or ssoouurrccee) 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 .. or ssoouurrccee) is at the top of the stack. + When a subroutine is executed, the number of parameters passed is pushed onto BBAASSHH__AARRGGCC. The shell sets BBAASSHH__AARRGGCC only when in - extended debugging mode (see the description of the eexxttddeebbuugg - option to the sshhoopptt builtin below). Setting eexxttddeebbuugg after the - shell has started to execute a script may result in inconsistent - values. + extended debugging mode (see the description of the eexxttddeebbuugg + option to the sshhoopptt builtin below). Setting eexxttddeebbuugg after the + shell has started to execute a script, or referencing this vari- + able when eexxttddeebbuugg is not set, may result in inconsistent val- + ues. BBAASSHH__AARRGGVV An array variable containing all of the parameters in the cur- rent bbaasshh execution call stack. The final parameter of the last @@ -818,59 +824,60 @@ PPAARRAAMMEETTEERRSS shell sets BBAASSHH__AARRGGVV only when in extended debugging mode (see the description of the eexxttddeebbuugg option to the sshhoopptt builtin below). Setting eexxttddeebbuugg after the shell has started to execute - a script may result in inconsistent values. + a script, or referencing this variable when eexxttddeebbuugg is not set, + may result in inconsistent values. BBAASSHH__AARRGGVV00 - When referenced, this variable expands to the name of the shell + When referenced, this variable expands to the name of the shell or shell script (identical to $$00; see the description of special - parameter 0 above). Assignment to BBAASSHH__AARRGGVV00 causes the value - assigned to also be assigned to $$00. If BBAASSHH__AARRGGVV00 is unset, it + parameter 0 above). Assignment to BBAASSHH__AARRGGVV00 causes the value + assigned to also be assigned to $$00. If BBAASSHH__AARRGGVV00 is unset, it loses its special properties, even if it is subsequently reset. BBAASSHH__CCMMDDSS - An associative array variable whose members correspond to the - internal hash table of commands as maintained by the hhaasshh + An associative array variable whose members correspond to the + internal hash table of commands as maintained by the hhaasshh builtin. Elements added to this array appear in the hash table; - however, unsetting array elements currently does not cause com- - mand names to be removed from the hash table. If BBAASSHH__CCMMDDSS is - unset, it loses its special properties, even if it is subse- + however, unsetting array elements currently does not cause com- + mand names to be removed from the hash table. If BBAASSHH__CCMMDDSS is + unset, it loses its special properties, even if it is subse- quently reset. BBAASSHH__CCOOMMMMAANNDD - The command currently being executed or about to be executed, + The command currently being executed or about to be executed, unless the shell is executing a command as the result of a trap, - in which case it is the command executing at the time of the + in which case it is the command executing at the time of the trap. BBAASSHH__EEXXEECCUUTTIIOONN__SSTTRRIINNGG The command argument to the --cc invocation option. BBAASSHH__LLIINNEENNOO - An array variable whose members are the line numbers in source - files where each corresponding member of FFUUNNCCNNAAMMEE was invoked. + An array variable whose members are the line numbers in source + files where each corresponding member of FFUUNNCCNNAAMMEE was invoked. $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}} is the line number in the source file ($${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}) where $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called (or - $${{BBAASSHH__LLIINNEENNOO[[_$_i_-_1]]}} if referenced within another shell func- + $${{BBAASSHH__LLIINNEENNOO[[_$_i_-_1]]}} if referenced within another shell func- tion). Use LLIINNEENNOO to obtain the current line number. BBAASSHH__LLOOAADDAABBLLEESS__PPAATTHH - A colon-separated list of directories in which the shell looks - for dynamically loadable builtins specified by the eennaabbllee com- + A colon-separated list of directories in which the shell looks + for dynamically loadable builtins specified by the eennaabbllee com- mand. BBAASSHH__RREEMMAATTCCHH - An array variable whose members are assigned by the ==~~ binary - operator to the [[[[ conditional command. The element with index - 0 is the portion of the string matching the entire regular - expression. The element with index _n is the portion of the + An array variable whose members are assigned by the ==~~ binary + operator to the [[[[ conditional command. The element with index + 0 is the portion of the string matching the entire regular + expression. The element with index _n is the portion of the string matching the _nth parenthesized subexpression. This vari- able is read-only. BBAASSHH__SSOOUURRCCEE - An array variable whose members are the source filenames where - the corresponding shell function names in the FFUUNNCCNNAAMMEE array - variable are defined. The shell function $${{FFUUNNCCNNAAMMEE[[_$_i]]}} is - defined in the file $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}} and called from + An array variable whose members are the source filenames where + the corresponding shell function names in the FFUUNNCCNNAAMMEE array + variable are defined. The shell function $${{FFUUNNCCNNAAMMEE[[_$_i]]}} is + defined in the file $${{BBAASSHH__SSOOUURRCCEE[[_$_i]]}} and called from $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}}. BBAASSHH__SSUUBBSSHHEELLLL - Incremented by one within each subshell or subshell environment - when the shell begins executing in that environment. The ini- + Incremented by one within each subshell or subshell environment + when the shell begins executing in that environment. The ini- tial value is 0. BBAASSHH__VVEERRSSIINNFFOO A readonly array variable whose members hold version information - for this instance of bbaasshh. The values assigned to the array + for this instance of bbaasshh. The values assigned to the array members are as follows: BBAASSHH__VVEERRSSIINNFFOO[[0]] The major version number (the _r_e_l_e_a_s_e). BBAASSHH__VVEERRSSIINNFFOO[[1]] The minor version number (the _v_e_r_s_i_o_n). @@ -879,137 +886,137 @@ PPAARRAAMMEETTEERRSS BBAASSHH__VVEERRSSIINNFFOO[[4]] The release status (e.g., _b_e_t_a_1). BBAASSHH__VVEERRSSIINNFFOO[[5]] The value of MMAACCHHTTYYPPEE. BBAASSHH__VVEERRSSIIOONN - Expands to a string describing the version of this instance of + Expands to a string describing the version of this instance of bbaasshh. CCOOMMPP__CCWWOORRDD - An index into $${{CCOOMMPP__WWOORRDDSS}} of the word containing the current + An index into $${{CCOOMMPP__WWOORRDDSS}} of the word containing the current cursor position. This variable is available only in shell func- - tions invoked by the programmable completion facilities (see + tions invoked by the programmable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). CCOOMMPP__KKEEYY The key (or final key of a key sequence) used to invoke the cur- rent completion function. CCOOMMPP__LLIINNEE - The current command line. This variable is available only in - shell functions and external commands invoked by the program- + The current command line. This variable is available only in + shell functions and external commands invoked by the program- mable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). CCOOMMPP__PPOOIINNTT - The index of the current cursor position relative to the begin- - ning of the current command. If the current cursor position is + The index of the current cursor position relative to the begin- + ning of the current command. If the current cursor position is at the end of the current command, the value of this variable is - equal to $${{##CCOOMMPP__LLIINNEE}}. This variable is available only in - shell functions and external commands invoked by the program- + equal to $${{##CCOOMMPP__LLIINNEE}}. This variable is available only in + shell functions and external commands invoked by the program- mable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). CCOOMMPP__TTYYPPEE - Set to an integer value corresponding to the type of completion - attempted that caused a completion function to be called: _T_A_B, - for normal completion, _?, for listing completions after succes- - sive tabs, _!, for listing alternatives on partial word comple- - tion, _@, to list completions if the word is not unmodified, or - _%, for menu completion. This variable is available only in - shell functions and external commands invoked by the program- + Set to an integer value corresponding to the type of completion + attempted that caused a completion function to be called: _T_A_B, + for normal completion, _?, for listing completions after succes- + sive tabs, _!, for listing alternatives on partial word comple- + tion, _@, to list completions if the word is not unmodified, or + _%, for menu completion. This variable is available only in + shell functions and external commands invoked by the program- mable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). CCOOMMPP__WWOORRDDBBRREEAAKKSS - The set of characters that the rreeaaddlliinnee library treats as word - separators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS - is unset, it loses its special properties, even if it is subse- + The set of characters that the rreeaaddlliinnee library treats as word + separators when performing word completion. If CCOOMMPP__WWOORRDDBBRREEAAKKSS + is unset, it loses its special properties, even if it is subse- quently reset. CCOOMMPP__WWOORRDDSS - An array variable (see AArrrraayyss below) consisting of the individ- - ual words in the current command line. The line is split into - words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as + An array variable (see AArrrraayyss below) consisting of the individ- + ual words in the current command line. The line is split into + words as rreeaaddlliinnee would split it, using CCOOMMPP__WWOORRDDBBRREEAAKKSS as described above. This variable is available only in shell func- - tions invoked by the programmable completion facilities (see + tions invoked by the programmable completion facilities (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). - CCOOPPRROOCC An array variable (see AArrrraayyss below) created to hold the file - descriptors for output from and input to an unnamed coprocess + CCOOPPRROOCC An array variable (see AArrrraayyss below) created to hold the file + descriptors for output from and input to an unnamed coprocess (see CCoopprroocceesssseess above). DDIIRRSSTTAACCKK An array variable (see AArrrraayyss below) containing the current con- - tents of the directory stack. Directories appear in the stack - in the order they are displayed by the ddiirrss builtin. Assigning + tents of the directory stack. Directories appear in the stack + in the order they are displayed by the ddiirrss builtin. Assigning to members of this array variable may be used to modify directo- - ries already in the stack, but the ppuusshhdd and ppooppdd builtins must + ries already in the stack, but the ppuusshhdd and ppooppdd builtins must be used to add and remove directories. Assignment to this vari- - able will not change the current directory. If DDIIRRSSTTAACCKK is - unset, it loses its special properties, even if it is subse- + able will not change the current directory. If DDIIRRSSTTAACCKK is + unset, it loses its special properties, even if it is subse- quently reset. EEPPOOCCHHRREEAALLTTIIMMEE Each time this parameter is referenced, it expands to the number - of seconds since the Unix Epoch (see _t_i_m_e(3)) as a floating + of seconds since the Unix Epoch (see _t_i_m_e(3)) as a floating point value with micro-second granularity. Assignments to - EEPPOOCCHHRREEAALLTTIIMMEE are ignored. If EEPPOOCCHHRREEAALLTTIIMMEE is unset, it loses + EEPPOOCCHHRREEAALLTTIIMMEE are ignored. If EEPPOOCCHHRREEAALLTTIIMMEE is unset, it loses its special properties, even if it is subsequently reset. EEPPOOCCHHSSEECCOONNDDSS Each time this parameter is referenced, it expands to the number - of seconds since the Unix Epoch (see _t_i_m_e(3)). Assignments to - EEPPOOCCHHSSEECCOONNDDSS are ignored. If EEPPOOCCHHSSEECCOONNDDSS is unset, it loses + of seconds since the Unix Epoch (see _t_i_m_e(3)). Assignments to + EEPPOOCCHHSSEECCOONNDDSS are ignored. If EEPPOOCCHHSSEECCOONNDDSS is unset, it loses its special properties, even if it is subsequently reset. - EEUUIIDD Expands to the effective user ID of the current user, initial- + EEUUIIDD Expands to the effective user ID of the current user, initial- ized at shell startup. This variable is readonly. FFUUNNCCNNAAMMEE - 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 FFUUNNCCNNAAMMEE have no effect. If FFUUNNCCNNAAMMEE 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 FFUUNNCCNNAAMMEE have no effect. If FFUUNNCCNNAAMMEE is unset, + it loses its special properties, even if it is subsequently reset. - This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. - Each element of FFUUNNCCNNAAMMEE has corresponding elements in - BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For - instance, $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file - $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The + This variable can be used with BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE. + Each element of FFUUNNCCNNAAMMEE has corresponding elements in + BBAASSHH__LLIINNEENNOO and BBAASSHH__SSOOUURRCCEE to describe the call stack. For + instance, $${{FFUUNNCCNNAAMMEE[[_$_i]]}} was called from the file + $${{BBAASSHH__SSOOUURRCCEE[[_$_i_+_1]]}} at line number $${{BBAASSHH__LLIINNEENNOO[[_$_i]]}}. The ccaalllleerr builtin displays the current call stack using this infor- mation. - GGRROOUUPPSS An array variable containing the list of groups of which the + GGRROOUUPPSS An array variable containing the list of groups of which the current user is a member. Assignments to GGRROOUUPPSS have no effect. - If GGRROOUUPPSS is unset, it loses its special properties, even if it + If GGRROOUUPPSS is unset, it loses its special properties, even if it is subsequently reset. HHIISSTTCCMMDD The history number, or index in the history list, of the current - command. If HHIISSTTCCMMDD is unset, it loses its special properties, + command. If HHIISSTTCCMMDD is unset, it loses its special properties, even if it is subsequently reset. HHOOSSTTNNAAMMEE Automatically set to the name of the current host. HHOOSSTTTTYYPPEE - Automatically set to a string that uniquely describes the type - of machine on which bbaasshh is executing. The default is system- + Automatically set to a string that uniquely describes the type + of machine on which bbaasshh is executing. The default is system- dependent. - LLIINNEENNOO 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 + LLIINNEENNOO 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 LLIINNEENNOO is unset, it loses its special proper- ties, even if it is subsequently reset. MMAACCHHTTYYPPEE - Automatically set to a string that fully describes the system - type on which bbaasshh is executing, in the standard GNU _c_p_u_-_c_o_m_- + Automatically set to a string that fully describes the system + type on which bbaasshh is executing, in the standard GNU _c_p_u_-_c_o_m_- _p_a_n_y_-_s_y_s_t_e_m format. The default is system-dependent. MMAAPPFFIILLEE - An array variable (see AArrrraayyss below) created to hold the text + An array variable (see AArrrraayyss below) created to hold the text read by the mmaappffiillee builtin when no variable name is supplied. OOLLDDPPWWDD The previous working directory as set by the ccdd command. - OOPPTTAARRGG The value of the last option argument processed by the ggeettooppttss + OOPPTTAARRGG The value of the last option argument processed by the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOPPTTIINNDD The index of the next argument to be processed by the ggeettooppttss + OOPPTTIINNDD The index of the next argument to be processed by the ggeettooppttss builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - OOSSTTYYPPEE Automatically set to a string that describes the operating sys- - tem on which bbaasshh is executing. The default is system-depen- + OOSSTTYYPPEE Automatically set to a string that describes the operating sys- + tem on which bbaasshh is executing. The default is system-depen- dent. PPIIPPEESSTTAATTUUSS - An array variable (see AArrrraayyss below) containing a list of exit - status values from the processes in the most-recently-executed + An array variable (see AArrrraayyss 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). - PPPPIIDD The process ID of the shell's parent. This variable is read- + PPPPIIDD The process ID of the shell's parent. This variable is read- only. PPWWDD The current working directory as set by the ccdd command. RRAANNDDOOMM 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 RRAANNDDOOMM. If RRAANNDDOOMM is unset, - it loses its special properties, even if it is subsequently + it loses its special properties, even if it is subsequently reset. RREEAADDLLIINNEE__LLIINNEE The contents of the rreeaaddlliinnee line buffer, for use with "bind -x" @@ -1017,197 +1024,202 @@ PPAARRAAMMEETTEERRSS RREEAADDLLIINNEE__PPOOIINNTT The position of the insertion point in the rreeaaddlliinnee line buffer, for use with "bind -x" (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). - RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when + RREEPPLLYY Set to the line of input read by the rreeaadd builtin command when no arguments are supplied. SSEECCOONNDDSS - Each time this parameter is referenced, the number of seconds - since shell invocation is returned. If a value is assigned to - SSEECCOONNDDSS, 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 + SSEECCOONNDDSS, the value returned upon subsequent references is the + number of seconds since the assignment plus the value assigned. If SSEECCOONNDDSS is unset, it loses its special properties, even if it is subsequently reset. SSHHEELLLLOOPPTTSS - A colon-separated list of enabled shell options. Each word in - the list is a valid argument for the --oo option to the sseett + A colon-separated list of enabled shell options. Each word in + the list is a valid argument for the --oo option to the sseett builtin command (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). The options - appearing in SSHHEELLLLOOPPTTSS are those reported as _o_n by sseett --oo. If - this variable is in the environment when bbaasshh starts up, each - shell option in the list will be enabled before reading any + appearing in SSHHEELLLLOOPPTTSS are those reported as _o_n by sseett --oo. If + this variable is in the environment when bbaasshh starts up, each + shell option in the list will be enabled before reading any startup files. This variable is read-only. SSHHLLVVLL Incremented by one each time an instance of bbaasshh is started. UUIIDD 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, bbaasshh + The following variables are used by the shell. In some cases, bbaasshh assigns a default value to a variable; these cases are noted below. BBAASSHH__CCOOMMPPAATT - The value is used to set the shell's compatibility level. See - the description of the sshhoopptt builtin below under SSHHEELLLL BBUUIILLTTIINN - CCOOMMMMAANNDDSS 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 BBAASSHH__CCOOMMPPAATT is unset or set to the empty - string, the compatibility level is set to the default for the - current version. If BBAASSHH__CCOOMMPPAATT is set to a value that is not + The value is used to set the shell's compatibility level. See + the description of the sshhoopptt builtin below under SSHHEELLLL BBUUIILLTTIINN + CCOOMMMMAANNDDSS 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 BBAASSHH__CCOOMMPPAATT is unset or set to the empty + string, the compatibility level is set to the default for the + current version. If BBAASSHH__CCOOMMPPAATT 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 sshhoopptt 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 sshhoopptt builtin described below (for example, ccoommppaatt4422 means that 4.2 and 42 are valid values). The current version is also a valid value. BBAASSHH__EENNVV - If this parameter is set when bbaasshh is executing a shell script, - its value is interpreted as a filename containing commands to + If this parameter is set when bbaasshh is executing a shell script, + its value is interpreted as a filename containing commands to initialize the shell, as in _~_/_._b_a_s_h_r_c. The value of BBAASSHH__EENNVV 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. PPAATTHH is not used to search for the resultant filename. BBAASSHH__XXTTRRAACCEEFFDD - If set to an integer corresponding to a valid file descriptor, - bbaasshh will write the trace output generated when _s_e_t _-_x is - enabled to that file descriptor. The file descriptor is closed - when BBAASSHH__XXTTRRAACCEEFFDD is unset or assigned a new value. Unsetting - BBAASSHH__XXTTRRAACCEEFFDD 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, + bbaasshh will write the trace output generated when _s_e_t _-_x is + enabled to that file descriptor. The file descriptor is closed + when BBAASSHH__XXTTRRAACCEEFFDD is unset or assigned a new value. Unsetting + BBAASSHH__XXTTRRAACCEEFFDD or assigning it the empty string causes the trace + output to be sent to the standard error. Note that setting BBAASSHH__XXTTRRAACCEEFFDD to 2 (the standard error file descriptor) and then unsetting it will result in the standard error being closed. - CCDDPPAATTHH The search path for the ccdd command. This is a colon-separated - list of directories in which the shell looks for destination - directories specified by the ccdd command. A sample value is + CCDDPPAATTHH The search path for the ccdd command. This is a colon-separated + list of directories in which the shell looks for destination + directories specified by the ccdd command. A sample value is ".:~:/usr". CCHHIILLDD__MMAAXX - 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. CCOOLLUUMMNNSS - Used by the sseelleecctt compound command to determine the terminal - width when printing selection lists. Automatically set if the - cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon + Used by the sseelleecctt compound command to determine the terminal + width when printing selection lists. Automatically set if the + cchheecckkwwiinnssiizzee option is enabled or in an interactive shell upon receipt of a SSIIGGWWIINNCCHH. CCOOMMPPRREEPPLLYY An array variable from which bbaasshh reads the possible completions - generated by a shell function invoked by the programmable com- - pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each + generated by a shell function invoked by the programmable com- + pletion facility (see PPrrooggrraammmmaabbllee CCoommpplleettiioonn below). Each array element contains one possible completion. - EEMMAACCSS If bbaasshh finds this variable in the environment when the shell - starts with value "t", it assumes that the shell is running in + EEMMAACCSS If bbaasshh 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. - EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in POSIX - mode. + EENNVV Similar to BBAASSHH__EENNVV; used when the shell is invoked in _p_o_s_i_x + _m_o_d_e. EEXXEECCIIGGNNOORREE - A colon-separated list of shell patterns (see PPaatttteerrnn MMaattcchhiinngg) - defining the list of filenames to be ignored by command search - using PPAATTHH. 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 PPaatttteerrnn MMaattcchhiinngg) + defining the list of filenames to be ignored by command search + using PPAATTHH. Files whose full pathnames match one of these pat- + terns are not considered executable files for the purposes of completion and command execution via PPAATTHH lookup. This does not affect the behavior of the [[, tteesstt, and [[[[ commands. Full path- - names in the command hash table are not subject to EEXXEECCIIGGNNOORREE. - 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 EEXXEECCIIGGNNOORREE. + 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 eexxttgglloobb shell option. FFCCEEDDIITT The default editor for the ffcc builtin command. FFIIGGNNOORREE - A colon-separated list of suffixes to ignore when performing + A colon-separated list of suffixes to ignore when performing filename completion (see RREEAADDLLIINNEE below). A filename whose suf- - fix matches one of the entries in FFIIGGNNOORREE is excluded from the + fix matches one of the entries in FFIIGGNNOORREE is excluded from the list of matched filenames. A sample value is ".o:~". FFUUNNCCNNEESSTT - If set to a numeric value greater than 0, defines a maximum - function nesting level. Function invocations that exceed this + If set to a numeric value greater than 0, defines a maximum + function nesting level. Function invocations that exceed this nesting level will cause the current command to abort. GGLLOOBBIIGGNNOORREE - A colon-separated list of patterns defining the set of file - names to be ignored by pathname expansion. If a file name - matched by a pathname expansion pattern also matches one of the + 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 GGLLOOBBIIGGNNOORREE, it is removed from the list of matches. HHIISSTTCCOONNTTRROOLL - A colon-separated list of values controlling how commands are - saved on the history list. If the list of values includes - _i_g_n_o_r_e_s_p_a_c_e, lines which begin with a ssppaaccee character are not - saved in the history list. A value of _i_g_n_o_r_e_d_u_p_s causes lines + A colon-separated list of values controlling how commands are + saved on the history list. If the list of values includes + _i_g_n_o_r_e_s_p_a_c_e, lines which begin with a ssppaaccee character are not + saved in the history list. A value of _i_g_n_o_r_e_d_u_p_s causes lines matching the previous history entry to not be saved. A value of _i_g_n_o_r_e_b_o_t_h is shorthand for _i_g_n_o_r_e_s_p_a_c_e and _i_g_n_o_r_e_d_u_p_s. A value of _e_r_a_s_e_d_u_p_s causes all previous lines matching the current line - to be removed from the history list before that line is saved. - Any value not in the above list is ignored. If HHIISSTTCCOONNTTRROOLL is - unset, or does not include a valid value, all lines read by the + to be removed from the history list before that line is saved. + Any value not in the above list is ignored. If HHIISSTTCCOONNTTRROOLL is + unset, or does not include a valid value, all lines read by the shell parser are saved on the history list, subject to the value - of HHIISSTTIIGGNNOORREE. The second and subsequent lines of a multi-line - compound command are not tested, and are added to the history + of HHIISSTTIIGGNNOORREE. The second and subsequent lines of a multi-line + compound command are not tested, and are added to the history regardless of the value of HHIISSTTCCOONNTTRROOLL. HHIISSTTFFIILLEE The name of the file in which command history is saved (see HHIISS-- - TTOORRYY below). The default value is _~_/_._b_a_s_h___h_i_s_t_o_r_y. If unset, + TTOORRYY below). The default value is _~_/_._b_a_s_h___h_i_s_t_o_r_y. If unset, the command history is not saved when a shell exits. HHIISSTTFFIILLEESSIIZZEE The maximum number of lines contained in the history file. When - this variable is assigned a value, the history file is trun- - cated, if necessary, to contain no more than that number of - lines by removing the oldest entries. The history file is also - truncated to this size after writing it when a shell exits. If - the value is 0, the history file is truncated to zero size. - Non-numeric values and numeric values less than zero inhibit - truncation. The shell sets the default value to the value of + this variable is assigned a value, the history file is trun- + cated, if necessary, to contain no more than that number of + lines by removing the oldest entries. The history file is also + truncated to this size after writing it when a shell exits. If + the value is 0, the history file is truncated to zero size. + Non-numeric values and numeric values less than zero inhibit + truncation. The shell sets the default value to the value of HHIISSTTSSIIZZEE after reading any startup files. HHIISSTTIIGGNNOORREE - A colon-separated list of patterns used to decide which command - lines should be saved on the history list. Each pattern is - anchored at the beginning of the line and must match the com- - plete line (no implicit `**' is appended). Each pattern is - tested against the line after the checks specified by HHIISSTTCCOONN-- - TTRROOLL are applied. In addition to the normal shell pattern + A colon-separated list of patterns used to decide which command + lines should be saved on the history list. Each pattern is + anchored at the beginning of the line and must match the com- + plete line (no implicit `**' is appended). Each pattern is + tested against the line after the checks specified by HHIISSTTCCOONN-- + TTRROOLL are applied. In addition to the normal shell pattern matching characters, `&&' matches the previous history line. `&&' - may be escaped using a backslash; the backslash is removed + may be escaped using a backslash; the backslash is removed before attempting a match. The second and subsequent lines of a multi-line compound command are not tested, and are added to the - history regardless of the value of HHIISSTTIIGGNNOORREE. The pattern + history regardless of the value of HHIISSTTIIGGNNOORREE. The pattern matching honors the setting of the eexxttgglloobb shell option. HHIISSTTSSIIZZEE - The number of commands to remember in the command history (see - HHIISSTTOORRYY below). If the value is 0, commands are not saved in + The number of commands to remember in the command history (see + HHIISSTTOORRYY 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. HHIISSTTTTIIMMEEFFOORRMMAATT - 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 _s_t_r_f_t_i_m_e(3) to print the time stamp associated - with each history entry displayed by the hhiissttoorryy 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 hhiissttoorryy 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. HHOOMMEE The home directory of the current user; the default argument for the ccdd builtin command. The value of this variable is also used when performing tilde expansion. HHOOSSTTFFIILLEE - Contains the name of a file in the same format as _/_e_t_c_/_h_o_s_t_s + Contains the name of a file in the same format as _/_e_t_c_/_h_o_s_t_s 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, bbaasshh adds the contents of - the new file to the existing list. If HHOOSSTTFFIILLEE is set, but has - no value, or does not name a readable file, bbaasshh attempts to - read _/_e_t_c_/_h_o_s_t_s 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, bbaasshh adds the contents of + the new file to the existing list. If HHOOSSTTFFIILLEE is set, but has + no value, or does not name a readable file, bbaasshh attempts to + read _/_e_t_c_/_h_o_s_t_s to obtain the list of possible hostname comple- tions. When HHOOSSTTFFIILLEE is unset, the hostname list is cleared. - IIFFSS The _I_n_t_e_r_n_a_l _F_i_e_l_d _S_e_p_a_r_a_t_o_r that is used for word splitting - after expansion and to split lines into words with the rreeaadd + IIFFSS The _I_n_t_e_r_n_a_l _F_i_e_l_d _S_e_p_a_r_a_t_o_r that is used for word splitting + after expansion and to split lines into words with the rreeaadd builtin command. The default value is ``''. IIGGNNOORREEEEOOFF Controls the action of an interactive shell on receipt of an EEOOFF character as the sole input. If set, the value is the number of - consecutive EEOOFF characters which must be typed as the first - characters on an input line before bbaasshh 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, EEOOFF signifies the + consecutive EEOOFF characters which must be typed as the first + characters on an input line before bbaasshh 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, EEOOFF signifies the end of input to the shell. IINNPPUUTTRRCC - The filename for the rreeaaddlliinnee startup file, overriding the + The filename for the rreeaaddlliinnee startup file, overriding the default of _~_/_._i_n_p_u_t_r_c (see RREEAADDLLIINNEE below). + IINNSSIIDDEE__EEMMAACCSS + If this variable appears in the environment when the shell + starts, bbaasshh assumes that it is running inside an Emacs shell + buffer and may disable line editing, depending on the value of + TTEERRMM. LLAANNGG Used to determine the locale category for any category not specifically selected with a variable starting with LLCC__. LLCC__AALLLL This variable overrides the value of LLAANNGG and any other LLCC__ @@ -1273,39 +1285,40 @@ PPAARRAAMMEETTEERRSS shell enters _p_o_s_i_x _m_o_d_e before reading the startup files, as if the ----ppoossiixx invocation option had been supplied. If it is set while the shell is running, bbaasshh enables _p_o_s_i_x _m_o_d_e, as if the - command _s_e_t _-_o _p_o_s_i_x had been executed. + command _s_e_t _-_o _p_o_s_i_x had been executed. When the shell enters + _p_o_s_i_x _m_o_d_e, it sets this variable if it was not already set. PPRROOMMPPTT__CCOOMMMMAANNDD If set, the value is executed as a command prior to issuing each primary prompt. PPRROOMMPPTT__DDIIRRTTRRIIMM - 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 \\ww and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below). + the \\ww and \\WW prompt string escapes (see PPRROOMMPPTTIINNGG below). Characters removed are replaced with an ellipsis. - PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) - and displayed by interactive shells after reading a command and + PPSS00 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) + and displayed by interactive shells after reading a command and before the command is executed. - PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) - and used as the primary prompt string. The default value is + PPSS11 The value of this parameter is expanded (see PPRROOMMPPTTIINNGG below) + and used as the primary prompt string. The default value is ``\\ss--\\vv\\$$ ''. - PPSS22 The value of this parameter is expanded as with PPSS11 and used as + PPSS22 The value of this parameter is expanded as with PPSS11 and used as the secondary prompt string. The default is ``>> ''. PPSS33 The value of this parameter is used as the prompt for the sseelleecctt command (see SSHHEELLLL GGRRAAMMMMAARR above). - PPSS44 The value of this parameter is expanded as with PPSS11 and the - value is printed before each command bbaasshh displays during an - execution trace. The first character of the expanded value of + PPSS44 The value of this parameter is expanded as with PPSS11 and the + value is printed before each command bbaasshh displays during an + execution trace. The first character of the expanded value of PPSS44 is replicated multiple times, as necessary, to indicate mul- tiple levels of indirection. The default is ``++ ''. SSHHEELLLL The full pathname to the shell is kept in this environment vari- - able. If it is not set when the shell starts, bbaasshh assigns to + able. If it is not set when the shell starts, bbaasshh assigns to it the full pathname of the current user's login shell. TTIIMMEEFFOORRMMAATT - The value of this parameter is used as a format string specify- - ing how the timing information for pipelines prefixed with the - ttiimmee reserved word should be displayed. The %% 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 + ttiimmee reserved word should be displayed. The %% 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. %%%% A literal %%. %%[[_p]][[ll]]RR The elapsed time in seconds. @@ -1313,77 +1326,77 @@ PPAARRAAMMEETTEERRSS %%[[_p]][[ll]]SS The number of CPU seconds spent in system mode. %%PP The CPU percentage, computed as (%U + %S) / %R. - The optional _p is a digit specifying the _p_r_e_c_i_s_i_o_n, the number + The optional _p is a digit specifying the _p_r_e_c_i_s_i_o_n, the number of fractional digits after a decimal point. A value of 0 causes no decimal point or fraction to be output. At most three places - after the decimal point may be specified; values of _p greater - than 3 are changed to 3. If _p is not specified, the value 3 is + after the decimal point may be specified; values of _p greater + than 3 are changed to 3. If _p is not specified, the value 3 is used. - The optional ll specifies a longer format, including minutes, of - the form _M_Mm_S_S._F_Fs. The value of _p determines whether or not + The optional ll specifies a longer format, including minutes, of + the form _M_Mm_S_S._F_Fs. The value of _p determines whether or not the fraction is included. - If this variable is not set, bbaasshh acts as if it had the value - $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss\\tt%%33llSS''. If the value is null, + If this variable is not set, bbaasshh acts as if it had the value + $$''\\nnrreeaall\\tt%%33llRR\\nnuusseerr\\tt%%33llUU\\nnssyyss\\tt%%33llSS''. If the value is null, no timing information is displayed. A trailing newline is added when the format string is displayed. - TTMMOOUUTT If set to a value greater than zero, TTMMOOUUTT is treated as the + TTMMOOUUTT If set to a value greater than zero, TTMMOOUUTT is treated as the default timeout for the rreeaadd builtin. The sseelleecctt command termi- nates if input does not arrive after TTMMOOUUTT 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. BBaasshh 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. - TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which + TTMMPPDDIIRR If set, bbaasshh uses its value as the name of a directory in which bbaasshh creates temporary files for the shell's use. aauuttoo__rreessuummee 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 _n_a_m_e of a - stopped job, in this context, is the command line used to start - it. If set to the value _e_x_a_c_t, the string supplied must match - the name of a stopped job exactly; if set to _s_u_b_s_t_r_i_n_g, the - string supplied needs to match a substring of the name of a - stopped job. The _s_u_b_s_t_r_i_n_g value provides functionality analo- - gous to the %%?? job identifier (see JJOOBB CCOONNTTRROOLL 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 _n_a_m_e of a + stopped job, in this context, is the command line used to start + it. If set to the value _e_x_a_c_t, the string supplied must match + the name of a stopped job exactly; if set to _s_u_b_s_t_r_i_n_g, the + string supplied needs to match a substring of the name of a + stopped job. The _s_u_b_s_t_r_i_n_g value provides functionality analo- + gous to the %%?? job identifier (see JJOOBB CCOONNTTRROOLL 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 %%_s_t_r_i_n_g job identifier. hhiissttcchhaarrss - The two or three characters which control history expansion and + The two or three characters which control history expansion and tokenization (see HHIISSTTOORRYY EEXXPPAANNSSIIOONN below). The first character - is the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, the character which signals - the start of a history expansion, normally `!!'. The second - character is the _q_u_i_c_k _s_u_b_s_t_i_t_u_t_i_o_n 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 - `^^'. 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 `##'. The history com- + is the _h_i_s_t_o_r_y _e_x_p_a_n_s_i_o_n character, the character which signals + the start of a history expansion, normally `!!'. The second + character is the _q_u_i_c_k _s_u_b_s_t_i_t_u_t_i_o_n 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 + `^^'. 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 `##'. 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. AArrrraayyss - BBaasshh provides one-dimensional indexed and associative array variables. - Any variable may be used as an indexed array; the ddeeccllaarree 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 + BBaasshh provides one-dimensional indexed and associative array variables. + Any variable may be used as an indexed array; the ddeeccllaarree 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 _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e. The _s_u_b_s_c_r_i_p_t is treated as an arithmetic expression that must evaluate to a number. To explicitly - declare an indexed array, use ddeeccllaarree --aa _n_a_m_e (see SSHHEELLLL BBUUIILLTTIINN CCOOMM-- - MMAANNDDSS below). ddeeccllaarree --aa _n_a_m_e[[_s_u_b_s_c_r_i_p_t]] is also accepted; the _s_u_b_- + declare an indexed array, use ddeeccllaarree --aa _n_a_m_e (see SSHHEELLLL BBUUIILLTTIINN CCOOMM-- + MMAANNDDSS below). ddeeccllaarree --aa _n_a_m_e[[_s_u_b_s_c_r_i_p_t]] is also accepted; the _s_u_b_- _s_c_r_i_p_t is ignored. Associative arrays are created using ddeeccllaarree --AA _n_a_m_e. @@ -1391,141 +1404,141 @@ PPAARRAAMMEETTEERRSS Attributes may be specified for an array variable using the ddeeccllaarree and rreeaaddoonnllyy builtins. Each attribute applies to all members of an array. - Arrays are assigned to using compound assignments of the form - _n_a_m_e=((value_1 ... value_n)), where each _v_a_l_u_e is of the form [_s_u_b_- - _s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed array assignments do not require anything but + Arrays are assigned to using compound assignments of the form + _n_a_m_e=((value_1 ... value_n)), where each _v_a_l_u_e is of the form [_s_u_b_- + _s_c_r_i_p_t]=_s_t_r_i_n_g. Indexed array assignments do not require anything but _s_t_r_i_n_g. 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 ddeeccllaarree builtin. Individual array - elements may be assigned to using the _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e syntax - introduced above. When assigning to an indexed array, if _n_a_m_e is sub- - scripted by a negative number, that number is interpreted as relative - to one greater than the maximum index of _n_a_m_e, so negative indices + This syntax is also accepted by the ddeeccllaarree builtin. Individual array + elements may be assigned to using the _n_a_m_e[_s_u_b_s_c_r_i_p_t]=_v_a_l_u_e syntax + introduced above. When assigning to an indexed array, if _n_a_m_e is sub- + scripted by a negative number, that number is interpreted as relative + to one greater than the maximum index of _n_a_m_e, 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 ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. + Any element of an array may be referenced using ${_n_a_m_e[_s_u_b_s_c_r_i_p_t]}. The braces are required to avoid conflicts with pathname expansion. If - _s_u_b_s_c_r_i_p_t is @@ or **, the word expands to all members of _n_a_m_e. These - subscripts differ only when the word appears within double quotes. If + _s_u_b_s_c_r_i_p_t is @@ or **, the word expands to all members of _n_a_m_e. These + subscripts differ only when the word appears within double quotes. If the word is double-quoted, ${_n_a_m_e[*]} expands to a single word with the - value of each array member separated by the first character of the IIFFSS + value of each array member separated by the first character of the IIFFSS special variable, and ${_n_a_m_e[@]} expands each element of _n_a_m_e to a sep- - arate word. When there are no array members, ${_n_a_m_e[@]} expands to - nothing. If the double-quoted expansion occurs within a word, the - expansion of the first parameter is joined with the beginning part of - the original word, and the expansion of the last parameter is joined - with the last part of the original word. This is analogous to the - expansion of the special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss - above). ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_- - _s_c_r_i_p_t]}. If _s_u_b_s_c_r_i_p_t is ** or @@, the expansion is the number of ele- - ments in the array. If the _s_u_b_s_c_r_i_p_t 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, ${_n_a_m_e[@]} expands to + nothing. If the double-quoted expansion occurs within a word, the + expansion of the first parameter is joined with the beginning part of + the original word, and the expansion of the last parameter is joined + with the last part of the original word. This is analogous to the + expansion of the special parameters ** and @@ (see SSppeecciiaall PPaarraammeetteerrss + above). ${#_n_a_m_e[_s_u_b_s_c_r_i_p_t]} expands to the length of ${_n_a_m_e[_s_u_b_- + _s_c_r_i_p_t]}. If _s_u_b_s_c_r_i_p_t is ** or @@, the expansion is the number of ele- + ments in the array. If the _s_u_b_s_c_r_i_p_t 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 bbaasshh 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. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in + It is possible to obtain the keys (indices) of an array as well as the + values. ${!!_n_a_m_e[_@]} and ${!!_n_a_m_e[_*]} expand to the indices assigned in array variable _n_a_m_e. The treatment when in double quotes is similar to the expansion of the special parameters _@ and _* within double quotes. - The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] - destroys the array element at index _s_u_b_s_c_r_i_p_t, 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. uunnsseett _n_a_m_e, where _n_a_m_e is an + The uunnsseett builtin is used to destroy arrays. uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t] + destroys the array element at index _s_u_b_s_c_r_i_p_t, 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. uunnsseett _n_a_m_e, where _n_a_m_e is an array, or uunnsseett _n_a_m_e[_s_u_b_s_c_r_i_p_t], where _s_u_b_s_c_r_i_p_t is ** or @@, removes the entire array. - When using a variable name with a subscript as an argument to a com- - mand, such as with uunnsseett, without using the word expansion syntax - described above, the argument is subject to pathname expansion. If + When using a variable name with a subscript as an argument to a com- + mand, such as with uunnsseett, 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 ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to - specify an indexed array and a --AA option to specify an associative - array. If both options are supplied, --AA takes precedence. The rreeaadd - builtin accepts a --aa option to assign a list of words read from the + The ddeeccllaarree, llooccaall, and rreeaaddoonnllyy builtins each accept a --aa option to + specify an indexed array and a --AA option to specify an associative + array. If both options are supplied, --AA takes precedence. The rreeaadd + builtin accepts a --aa option to assign a list of words read from the standard input to an array. The sseett and ddeeccllaarree builtins display array values in a way that allows them to be reused as assignments. EEXXPPAANNSSIIOONN Expansion is performed on the command line after it has been split into - words. There are seven kinds of expansion performed: _b_r_a_c_e _e_x_p_a_n_s_i_o_n, - _t_i_l_d_e _e_x_p_a_n_s_i_o_n, _p_a_r_a_m_e_t_e_r _a_n_d _v_a_r_i_a_b_l_e _e_x_p_a_n_s_i_o_n, _c_o_m_m_a_n_d _s_u_b_s_t_i_t_u_- + words. There are seven kinds of expansion performed: _b_r_a_c_e _e_x_p_a_n_s_i_o_n, + _t_i_l_d_e _e_x_p_a_n_s_i_o_n, _p_a_r_a_m_e_t_e_r _a_n_d _v_a_r_i_a_b_l_e _e_x_p_a_n_s_i_o_n, _c_o_m_m_a_n_d _s_u_b_s_t_i_t_u_- _t_i_o_n, _a_r_i_t_h_m_e_t_i_c _e_x_p_a_n_s_i_o_n, _w_o_r_d _s_p_l_i_t_t_i_n_g, and _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n. 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: _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. This is performed at the same time as - tilde, parameter, variable, and arithmetic expansion and command sub- + able: _p_r_o_c_e_s_s _s_u_b_s_t_i_t_u_t_i_o_n. 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 (_q_u_o_t_e _r_e_m_o_v_a_l). - 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 "$$@@" and "$${{_n_a_m_e[[@@]]}}", and, in most cases, $$** and + 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 "$$@@" and "$${{_n_a_m_e[[@@]]}}", and, in most cases, $$** and $${{_n_a_m_e[[**]]}} as explained above (see PPAARRAAMMEETTEERRSS). BBrraaccee EExxppaannssiioonn _B_r_a_c_e _e_x_p_a_n_s_i_o_n is a mechanism by which arbitrary strings may be gener- - ated. This mechanism is similar to _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n, but the file- + ated. This mechanism is similar to _p_a_t_h_n_a_m_e _e_x_p_a_n_s_i_o_n, but the file- names generated need not exist. Patterns to be brace expanded take the form of an optional _p_r_e_a_m_b_l_e, followed by either a series of comma-sep- - arated strings or a sequence expression between a pair of braces, fol- - lowed by an optional _p_o_s_t_s_c_r_i_p_t. The preamble is prefixed to each + arated strings or a sequence expression between a pair of braces, fol- + lowed by an optional _p_o_s_t_s_c_r_i_p_t. The preamble is prefixed to each string contained within the braces, and the postscript is then appended to each resulting string, expanding left to right. - Brace expansions may be nested. The results of each expanded string - are not sorted; left to right order is preserved. For example, + Brace expansions may be nested. The results of each expanded string + are not sorted; left to right order is preserved. For example, a{{d,c,b}}e expands into `ade ace abe'. - A sequence expression takes the form {{_x...._y[[...._i_n_c_r]]}}, where _x and _y are - either integers or single characters, and _i_n_c_r, an optional increment, - is an integer. When integers are supplied, the expression expands to - each number between _x and _y, inclusive. Supplied integers may be pre- - fixed with _0 to force each term to have the same width. When either _x - or _y begins with a zero, the shell attempts to force all generated - terms to contain the same number of digits, zero-padding where neces- - sary. When characters are supplied, the expression expands to each - character lexicographically between _x and _y, inclusive, using the - default C locale. Note that both _x and _y must be of the same type. - When the increment is supplied, it is used as the difference between + A sequence expression takes the form {{_x...._y[[...._i_n_c_r]]}}, where _x and _y are + either integers or single characters, and _i_n_c_r, an optional increment, + is an integer. When integers are supplied, the expression expands to + each number between _x and _y, inclusive. Supplied integers may be pre- + fixed with _0 to force each term to have the same width. When either _x + or _y begins with a zero, the shell attempts to force all generated + terms to contain the same number of digits, zero-padding where neces- + sary. When characters are supplied, the expression expands to each + character lexicographically between _x and _y, inclusive, using the + default C locale. Note that both _x and _y must be of the same type. + When the increment is supplied, it is used as the difference between each term. The default increment is 1 or -1 as appropriate. Brace expansion is performed before any other expansions, and any char- - acters special to other expansions are preserved in the result. It is - strictly textual. BBaasshh does not apply any syntactic interpretation to + acters special to other expansions are preserved in the result. It is + strictly textual. BBaasshh does not apply any syntactic interpretation 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 - expression. Any incorrectly formed brace expansion is left unchanged. + A correctly-formed brace expansion must contain unquoted opening and + closing braces, and at least one unquoted comma or a valid sequence + expression. Any incorrectly formed brace expansion is left unchanged. A {{ or ,, may be quoted with a backslash to prevent its being considered - part of a brace expression. To avoid conflicts with parameter expan- + part of a brace expression. To avoid conflicts with parameter expan- sion, the string $${{ is not considered eligible for brace expansion, and inhibits brace expansion until the closing }}. @@ -1536,36 +1549,36 @@ EEXXPPAANNSSIIOONN or chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} - Brace expansion introduces a slight incompatibility with historical - versions of sshh. sshh does not treat opening or closing braces specially - when they appear as part of a word, and preserves them in the output. - BBaasshh removes braces from words as a consequence of brace expansion. - For example, a word entered to sshh as _f_i_l_e_{_1_,_2_} appears identically in - the output. The same word is output as _f_i_l_e_1 _f_i_l_e_2 after expansion by - bbaasshh. If strict compatibility with sshh is desired, start bbaasshh with the + Brace expansion introduces a slight incompatibility with historical + versions of sshh. sshh does not treat opening or closing braces specially + when they appear as part of a word, and preserves them in the output. + BBaasshh removes braces from words as a consequence of brace expansion. + For example, a word entered to sshh as _f_i_l_e_{_1_,_2_} appears identically in + the output. The same word is output as _f_i_l_e_1 _f_i_l_e_2 after expansion by + bbaasshh. If strict compatibility with sshh is desired, start bbaasshh with the ++BB option or disable brace expansion with the ++BB option to the sseett com- mand (see SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS below). TTiillddee EExxppaannssiioonn - If a word begins with an unquoted tilde character (`~~'), all of the - characters preceding the first unquoted slash (or all characters, if - there is no unquoted slash) are considered a _t_i_l_d_e_-_p_r_e_f_i_x. 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 _l_o_g_i_n _n_a_m_e. - If this login name is the null string, the tilde is replaced with the - value of the shell parameter HHOOMMEE. If HHOOMMEE 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 (`~~'), all of the + characters preceding the first unquoted slash (or all characters, if + there is no unquoted slash) are considered a _t_i_l_d_e_-_p_r_e_f_i_x. 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 _l_o_g_i_n _n_a_m_e. + If this login name is the null string, the tilde is replaced with the + value of the shell parameter HHOOMMEE. If HHOOMMEE 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 PPWWDD + If the tilde-prefix is a `~+', the value of the shell variable PPWWDD replaces the tilde-prefix. If the tilde-prefix is a `~-', the value of - the shell variable OOLLDDPPWWDD, if it is set, is substituted. If the char- - acters following the tilde in the tilde-prefix consist of a number _N, - optionally prefixed by a `+' or a `-', the tilde-prefix is replaced + the shell variable OOLLDDPPWWDD, if it is set, is substituted. If the char- + acters following the tilde in the tilde-prefix consist of a number _N, + optionally prefixed by a `+' or a `-', the tilde-prefix is replaced with the corresponding element from the directory stack, as it would be displayed by the ddiirrss 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 @@ -1573,10 +1586,15 @@ EEXXPPAANNSSIIOONN Each variable assignment is checked for unquoted tilde-prefixes immedi- ately following a :: or the first ==. In these cases, tilde expansion is - also performed. Consequently, one may use filenames with tildes in - assignments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the + also performed. Consequently, one may use filenames with tildes in + assignments to PPAATTHH, MMAAIILLPPAATTHH, and CCDDPPAATTHH, and the shell assigns the expanded value. + Bash also performs tilde expansion on words satisfying the conditions + of variable assignments (as described above under PPAARRAAMMEETTEERRSS) when they + appear as arguments to simple commands. Bash does not do this, except + for the _d_e_c_l_a_r_a_t_i_o_n commands listed above, when in _p_o_s_i_x _m_o_d_e. + PPaarraammeetteerr EExxppaannssiioonn The `$$' character introduces parameter expansion, command substitution, or arithmetic expansion. The parameter name or symbol to be expanded @@ -1598,18 +1616,18 @@ EEXXPPAANNSSIIOONN (AArrrraayyss). If the first character of _p_a_r_a_m_e_t_e_r is an exclamation point (!!), and - _p_a_r_a_m_e_t_e_r is not a _n_a_m_e_r_e_f, it introduces a level of variable indirec- - tion. BBaasshh uses the value of the variable formed from the rest of - _p_a_r_a_m_e_t_e_r 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 _p_a_r_a_m_e_t_e_r itself. This is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The - value is subject to tilde expansion, parameter expansion, command sub- - stitution, and arithmetic expansion. If _p_a_r_a_m_e_t_e_r is a nameref, this - expands to the name of the variable referenced by _p_a_r_a_m_e_t_e_r instead of - performing the complete indirect expansion. The exceptions to this are - the expansions of ${!!_p_r_e_f_i_x**} and ${!!_n_a_m_e[_@]} described below. The - exclamation point must immediately follow the left brace in order to - introduce indirection. + _p_a_r_a_m_e_t_e_r is not a _n_a_m_e_r_e_f, it introduces a level of indirection. BBaasshh + uses the value formed by expanding the rest of _p_a_r_a_m_e_t_e_r as the new + _p_a_r_a_m_e_t_e_r; this is then expanded and that value is used in the rest of + the expansion, rather than the expansion of the original _p_a_r_a_m_e_t_e_r. + This is known as _i_n_d_i_r_e_c_t _e_x_p_a_n_s_i_o_n. The value is subject to tilde + expansion, parameter expansion, command substitution, and arithmetic + expansion. If _p_a_r_a_m_e_t_e_r is a nameref, this expands to the name of the + parameter referenced by _p_a_r_a_m_e_t_e_r instead of performing the complete + indirect expansion. The exceptions to this are the expansions of + ${!!_p_r_e_f_i_x**} and ${!!_n_a_m_e[_@]} described below. The exclamation point + must immediately follow the left brace in order to introduce indirec- + tion. In each of the cases below, _w_o_r_d is subject to tilde expansion, parame- ter expansion, command substitution, and arithmetic expansion. @@ -2701,7 +2719,7 @@ CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENN ronment cannot affect the shell's execution environment. Subshells spawned to execute command substitutions inherit the value of - the --ee option from the parent shell. When not in _p_o_s_i_x mode, bbaasshh + the --ee option from the parent shell. When not in _p_o_s_i_x _m_o_d_e, bbaasshh clears the --ee option in such subshells. If a command is followed by a && and job control is not active, the @@ -4379,71 +4397,78 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS The return value is true unless an invalid option is supplied, or no matches were generated. - ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- + ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- _p_a_t] [--WW _w_o_r_d_l_i_s_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] _n_a_m_e [_n_a_m_e _._._.] - ccoommpplleettee --pprr [--DDEE] [_n_a_m_e ...] + ccoommpplleettee --pprr [--DDEEII] [_n_a_m_e ...] Specify how arguments to each _n_a_m_e should be completed. If the --pp 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 --rr option removes a completion spec- ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com- - pletion specifications. The --DD 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 --EE - 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 PPrrooggrraamm-- + pletion specifications. The --DD 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 --EE option + indicates that other supplied options and actions should apply + to ``empty'' command completion; that is, completion attempted + on a blank line. The --II 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 --DD option takes precedence + over --EE, and both take precedence over --II. If any of --DD, --EE, or + --II are supplied, any other _n_a_m_e 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 PPrrooggrraamm-- mmaabbllee CCoommpplleettiioonn. - Other options, if specified, have the following meanings. The - arguments to the --GG, --WW, and --XX options (and, if necessary, the - --PP and --SS options) should be quoted to protect them from expan- + Other options, if specified, have the following meanings. The + arguments to the --GG, --WW, and --XX options (and, if necessary, the + --PP and --SS options) should be quoted to protect them from expan- sion before the ccoommpplleettee builtin is invoked. --oo _c_o_m_p_-_o_p_t_i_o_n - The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp- - spec's behavior beyond the simple generation of comple- + The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp- + spec's behavior beyond the simple generation of comple- tions. _c_o_m_p_-_o_p_t_i_o_n may be one of: bbaasshhddeeffaauulltt Perform the rest of the default bbaasshh completions if the compspec generates no matches. - ddeeffaauulltt Use readline's default filename completion if + ddeeffaauulltt Use readline's default filename completion if the compspec generates no matches. ddiirrnnaammeess - Perform directory name completion if the comp- + Perform directory name completion if the comp- spec generates no matches. ffiilleennaammeess - 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. - nnooqquuoottee Tell readline not to quote the completed words - if they are filenames (quoting filenames is the + nnooqquuoottee Tell readline not to quote the completed words + if they are filenames (quoting filenames is the default). - nnoossoorrtt Tell readline not to sort the list of possible + nnoossoorrtt Tell readline not to sort the list of possible completions alphabetically. - nnoossppaaccee Tell readline not to append a space (the - default) to words completed at the end of the + nnoossppaaccee Tell readline not to append a space (the + default) to words completed at the end of the line. pplluussddiirrss - 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. --AA _a_c_t_i_o_n - The _a_c_t_i_o_n may be one of the following to generate a + The _a_c_t_i_o_n may be one of the following to generate a list of possible completions: aalliiaass Alias names. May also be specified as --aa. aarrrraayyvvaarr Array variable names. bbiinnddiinngg RReeaaddlliinnee key binding names. - bbuuiillttiinn Names of shell builtin commands. May also be + bbuuiillttiinn Names of shell builtin commands. May also be specified as --bb. ccoommmmaanndd Command names. May also be specified as --cc. ddiirreeccttoorryy @@ -4451,7 +4476,7 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS ddiissaabblleedd Names of disabled shell builtins. eennaabblleedd Names of enabled shell builtins. - eexxppoorrtt Names of exported shell variables. May also be + eexxppoorrtt Names of exported shell variables. May also be specified as --ee. ffiillee File names. May also be specified as --ff. ffuunnccttiioonn @@ -4460,17 +4485,17 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS hheellppttooppiicc Help topics as accepted by the hheellpp builtin. hhoossttnnaammee - Hostnames, as taken from the file specified by + Hostnames, as taken from the file specified by the HHOOSSTTFFIILLEE shell variable. - jjoobb Job names, if job control is active. May also + jjoobb Job names, if job control is active. May also be specified as --jj. - kkeeyywwoorrdd Shell reserved words. May also be specified as + kkeeyywwoorrdd Shell reserved words. May also be specified as --kk. rruunnnniinngg Names of running jobs, if job control is active. sseerrvviiccee Service names. May also be specified as --ss. - sseettoopptt Valid arguments for the --oo option to the sseett + sseettoopptt Valid arguments for the --oo option to the sseett builtin. - sshhoopptt Shell option names as accepted by the sshhoopptt + sshhoopptt Shell option names as accepted by the sshhoopptt builtin. ssiiggnnaall Signal names. ssttooppppeedd Names of stopped jobs, if job control is active. @@ -4479,190 +4504,194 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS Names of all shell variables. May also be spec- ified as --vv. --CC _c_o_m_m_a_n_d - _c_o_m_m_a_n_d is executed in a subshell environment, and its + _c_o_m_m_a_n_d is executed in a subshell environment, and its output is used as the possible completions. --FF _f_u_n_c_t_i_o_n - The shell function _f_u_n_c_t_i_o_n is executed in the current - shell environment. When the function is executed, the - first argument ($$11) is the name of the command whose - arguments are being completed, the second argument ($$22) + The shell function _f_u_n_c_t_i_o_n is executed in the current + shell environment. When the function is executed, the + first argument ($$11) is the name of the command whose + arguments are being completed, the second argument ($$22) is the word being completed, and the third argument ($$33) - 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 CCOOMMPPRREE-- + 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 CCOOMMPPRREE-- PPLLYY array variable. --GG _g_l_o_b_p_a_t - The pathname expansion pattern _g_l_o_b_p_a_t is expanded to + The pathname expansion pattern _g_l_o_b_p_a_t is expanded to generate the possible completions. --PP _p_r_e_f_i_x - _p_r_e_f_i_x is added at the beginning of each possible com- + _p_r_e_f_i_x is added at the beginning of each possible com- pletion after all other options have been applied. --SS _s_u_f_f_i_x _s_u_f_f_i_x is appended to each possible completion after all other options have been applied. --WW _w_o_r_d_l_i_s_t - The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS - special variable as delimiters, and each resultant word - is expanded. Shell quoting is honored within _w_o_r_d_l_i_s_t, + The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS + special variable as delimiters, and each resultant word + is expanded. Shell quoting is honored within _w_o_r_d_l_i_s_t, in order to provide a mechanism for the words to contain - shell metacharacters or characters in the value of IIFFSS. - The possible completions are the members of the resul- + shell metacharacters or characters in the value of IIFFSS. + The possible completions are the members of the resul- tant list which match the word being completed. --XX _f_i_l_t_e_r_p_a_t - _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. + _f_i_l_t_e_r_p_a_t is 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 _f_i_l_t_e_r_p_a_t is removed from the list. - A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this + ated by the preceding options and arguments, and each + completion matching _f_i_l_t_e_r_p_a_t is removed from the list. + A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this case, any completion not matching _f_i_l_t_e_r_p_a_t is removed. - The return value is true unless an invalid option is supplied, - an option other than --pp or --rr is supplied without a _n_a_m_e 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 --pp or --rr is supplied without a _n_a_m_e argu- + ment, an attempt is made to remove a completion specification for a _n_a_m_e for which no specification exists, or an error occurs adding a completion specification. - ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEE] [++oo _o_p_t_i_o_n] [_n_a_m_e] + ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEEII] [++oo _o_p_t_i_o_n] [_n_a_m_e] Modify completion options for each _n_a_m_e according to the - _o_p_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es - are supplied. If no _o_p_t_i_o_ns are given, display the completion - options for each _n_a_m_e or the current completion. The possible - values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin - described above. The --DD option indicates that the remaining + _o_p_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es + are supplied. If no _o_p_t_i_o_ns are given, display the completion + options for each _n_a_m_e or the current completion. The possible + values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin + described above. The --DD 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 --EE 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 --EE option indicates that other + supplied options should apply to ``empty'' command completion; + that is, completion attempted on a blank line. The --II 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 ;; or ||, 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 _n_a_m_e for which no completion specification exists, or an output error occurs. ccoonnttiinnuuee [_n] Resume the next iteration of the enclosing ffoorr, wwhhiillee, uunnttiill, or - sseelleecctt loop. If _n is specified, resume at the _nth enclosing - loop. _n must be >= 1. If _n is greater than the number of - enclosing loops, the last enclosing loop (the ``top-level'' + sseelleecctt loop. If _n is specified, resume at the _nth enclosing + loop. _n must be >= 1. If _n is greater than the number of + enclosing loops, the last enclosing loop (the ``top-level'' loop) is resumed. The return value is 0 unless _n is not greater than or equal to 1. ddeeccllaarree [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] ttyyppeesseett [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] - Declare variables and/or give them attributes. If no _n_a_m_es are - given then display the values of variables. The --pp option will + Declare variables and/or give them attributes. If no _n_a_m_es are + given then display the values of variables. The --pp option will display the attributes and values of each _n_a_m_e. When --pp is used - with _n_a_m_e arguments, additional options, other than --ff and --FF, - are ignored. When --pp is supplied without _n_a_m_e arguments, it - will display the attributes and values of all variables having + with _n_a_m_e arguments, additional options, other than --ff and --FF, + are ignored. When --pp is supplied without _n_a_m_e 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 --pp, ddeeccllaarree will display the - attributes and values of all shell variables. The --ff option - will restrict the display to shell functions. The --FF option - inhibits the display of function definitions; only the function - name and attributes are printed. If the eexxttddeebbuugg shell option - is enabled using sshhoopptt, the source file name and line number + options are supplied with --pp, ddeeccllaarree will display the + attributes and values of all shell variables. The --ff option + will restrict the display to shell functions. The --FF option + inhibits the display of function definitions; only the function + name and attributes are printed. If the eexxttddeebbuugg shell option + is enabled using sshhoopptt, the source file name and line number where each _n_a_m_e is defined are displayed as well. The --FF option - implies --ff. The --gg option forces variables to be created or + implies --ff. The --gg option forces variables to be created or modified at the global scope, even when ddeeccllaarree 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: - --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss + --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss above). - --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss + --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss above). --ff Use function names only. --ii The variable is treated as an integer; arithmetic evalua- - tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when + tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when the variable is assigned a value. - --ll When the variable is assigned a value, all upper-case - characters are converted to lower-case. The upper-case + --ll When the variable is assigned a value, all upper-case + characters are converted to lower-case. The upper-case attribute is disabled. - --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name - reference to another variable. That other variable is - defined by the value of _n_a_m_e. All references, assign- - ments, and attribute modifications to _n_a_m_e, except those - using or changing the --nn attribute itself, are performed - on the variable referenced by _n_a_m_e's value. The nameref + --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name + reference to another variable. That other variable is + defined by the value of _n_a_m_e. All references, assign- + ments, and attribute modifications to _n_a_m_e, except those + using or changing the --nn attribute itself, are performed + on the variable referenced by _n_a_m_e's value. The nameref attribute cannot be applied to array variables. --rr Make _n_a_m_es readonly. These names cannot then be assigned values by subsequent assignment statements or unset. - --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions - inherit the DDEEBBUUGG and RREETTUURRNN traps from the calling - shell. The trace attribute has no special meaning for + --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions + inherit the DDEEBBUUGG and RREETTUURRNN traps from the calling + shell. The trace attribute has no special meaning for variables. - --uu When the variable is assigned a value, all lower-case - characters are converted to upper-case. The lower-case + --uu When the variable is assigned a value, all lower-case + characters are converted to upper-case. The lower-case attribute is disabled. - --xx Mark _n_a_m_es for export to subsequent commands via the + --xx Mark _n_a_m_es for export to subsequent commands via the environment. - Using `+' instead of `-' turns off the attribute instead, with + Using `+' instead of `-' turns off the attribute instead, with the exceptions that ++aa may not be used to destroy an array vari- - able and ++rr will not remove the readonly attribute. When used + able and ++rr will not remove the readonly attribute. When used in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as with the llooccaall command, unless the --gg option is supplied. If a vari- - able name is followed by =_v_a_l_u_e, the value of the variable is - set to _v_a_l_u_e. When using --aa or --AA and the compound assignment - syntax to create array variables, additional attributes do not + able name is followed by =_v_a_l_u_e, the value of the variable is + set to _v_a_l_u_e. When using --aa or --AA 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 AArrrraayyss above), one of the _n_a_m_e_s 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 + 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 AArrrraayyss above), one of the _n_a_m_e_s 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 --ff. ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]] - 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 ppuusshhdd command; the ppooppdd 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 ppuusshhdd command; the ppooppdd command removes + entries from the list. The current directory is always the first directory in the stack. --cc Clears the directory stack by deleting all of the entries. - --ll Produces a listing using full pathnames; the default + --ll Produces a listing using full pathnames; the default listing format uses a tilde to denote the home directory. --pp Print the directory stack with one entry per line. - --vv Print the directory stack with one entry per line, pre- + --vv Print the directory stack with one entry per line, pre- fixing each entry with its index in the stack. ++_n Displays the _nth entry counting from the left of the list shown by ddiirrss when invoked without options, starting with zero. - --_n Displays the _nth entry counting from the right of the + --_n Displays the _nth entry counting from the right of the list shown by ddiirrss when invoked without options, starting with zero. - The return value is 0 unless an invalid option is supplied or _n + The return value is 0 unless an invalid option is supplied or _n indexes beyond the end of the directory stack. ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ] - Without options, remove each _j_o_b_s_p_e_c from the table of active - jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr - option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option - is given, each _j_o_b_s_p_e_c is not removed from the table, but is - marked so that SSIIGGHHUUPP is not sent to the job if the shell - receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option - means to remove or mark all jobs; the --rr option without a _j_o_b_- - _s_p_e_c argument restricts operation to running jobs. The return + Without options, remove each _j_o_b_s_p_e_c from the table of active + jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr + option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option + is given, each _j_o_b_s_p_e_c is not removed from the table, but is + marked so that SSIIGGHHUUPP is not sent to the job if the shell + receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option + means to remove or mark all jobs; the --rr option without a _j_o_b_- + _s_p_e_c argument restricts operation to running jobs. The return value is 0 unless a _j_o_b_s_p_e_c does not specify a valid job. eecchhoo [--nneeEE] [_a_r_g ...] - Output the _a_r_gs, separated by spaces, followed by a newline. - The return status is 0 unless a write error occurs. If --nn is + Output the _a_r_gs, separated by spaces, followed by a newline. + The return status is 0 unless a write error occurs. If --nn is specified, the trailing newline is suppressed. If the --ee option - is given, interpretation of the following backslash-escaped - characters is enabled. The --EE option disables the interpreta- - tion of these escape characters, even on systems where they are - interpreted by default. The xxppgg__eecchhoo shell option may be used - to dynamically determine whether or not eecchhoo expands these - escape characters by default. eecchhoo does not interpret ---- to - mean the end of options. eecchhoo interprets the following escape + is given, interpretation of the following backslash-escaped + characters is enabled. The --EE option disables the interpreta- + tion of these escape characters, even on systems where they are + interpreted by default. The xxppgg__eecchhoo shell option may be used + to dynamically determine whether or not eecchhoo expands these + escape characters by default. eecchhoo does not interpret ---- to + mean the end of options. eecchhoo interprets the following escape sequences: \\aa alert (bell) \\bb backspace @@ -4675,190 +4704,190 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS \\tt horizontal tab \\vv vertical tab \\\\ backslash - \\00_n_n_n the eight-bit character whose value is the octal value + \\00_n_n_n the eight-bit character whose value is the octal value _n_n_n (zero to three octal digits) - \\xx_H_H the eight-bit character whose value is the hexadecimal + \\xx_H_H the eight-bit character whose value is the hexadecimal value _H_H (one or two hex digits) - \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the + \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H (one to four hex digits) \\UU_H_H_H_H_H_H_H_H - the Unicode (ISO/IEC 10646) character whose value is the + the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits) eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] - 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 --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are + to be executed without specifying a full pathname, even though + the shell normally searches for builtins before disk commands. + If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are enabled. For example, to use the tteesstt binary found via the PPAATTHH - instead of the shell builtin version, run ``enable -n test''. - The --ff option means to load the new builtin command _n_a_m_e from + instead of the shell builtin version, run ``enable -n test''. + The --ff option means to load the new builtin command _n_a_m_e from shared object _f_i_l_e_n_a_m_e, on systems that support dynamic loading. - The --dd option will delete a builtin previously loaded with --ff. + The --dd option will delete a builtin previously loaded with --ff. If no _n_a_m_e arguments are given, or if the --pp 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 --nn - is supplied, only disabled builtins are printed. If --aa is sup- - plied, the list printed includes all builtins, with an indica- - tion of whether or not each is enabled. If --ss is supplied, the - output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return - value is 0 unless a _n_a_m_e is not a shell builtin or there is an + ments, the list consists of all enabled shell builtins. If --nn + is supplied, only disabled builtins are printed. If --aa is sup- + plied, the list printed includes all builtins, with an indica- + tion of whether or not each is enabled. If --ss is supplied, the + output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return + value is 0 unless a _n_a_m_e is not a shell builtin or there is an error loading a new builtin from a shared object. eevvaall [_a_r_g ...] - The _a_r_gs 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 eevvaall. If there are + The _a_r_gs 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 eevvaall. If there are no _a_r_g_s, or only null arguments, eevvaall returns 0. eexxeecc [--ccll] [--aa _n_a_m_e] [_c_o_m_m_a_n_d [_a_r_g_u_m_e_n_t_s]] - If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process - is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If + If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process + is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If the --ll option is supplied, the shell places a dash at the begin- - ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what + ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what _l_o_g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with - an empty environment. If --aa is supplied, the shell passes _n_a_m_e + an empty environment. If --aa is supplied, the shell passes _n_a_m_e as the zeroth argument to the executed command. If _c_o_m_m_a_n_d can- - not be executed for some reason, a non-interactive shell exits, - unless the eexxeeccffaaiill 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 - eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take - effect in the current shell, and the return status is 0. If + not be executed for some reason, a non-interactive shell exits, + unless the eexxeeccffaaiill 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 + eexxeecc fails. If _c_o_m_m_a_n_d 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. eexxiitt [_n] - Cause the shell to exit with a status of _n. If _n is omitted, + Cause the shell to exit with a status of _n. If _n is omitted, the exit status is that of the last command executed. A trap on EEXXIITT is executed before the shell terminates. eexxppoorrtt [--ffnn] [_n_a_m_e[=_w_o_r_d]] ... eexxppoorrtt --pp - The supplied _n_a_m_e_s are marked for automatic export to the envi- - ronment of subsequently executed commands. If the --ff option is - given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or - if the --pp option is supplied, a list of names of all exported - variables is printed. The --nn option causes the export property + The supplied _n_a_m_e_s are marked for automatic export to the envi- + ronment of subsequently executed commands. If the --ff option is + given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or + if the --pp option is supplied, a list of names of all exported + variables is printed. The --nn option causes the export property to be removed from each _n_a_m_e. If a variable name is followed by =_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns an exit status of 0 unless an invalid option is encountered, one - of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- + of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- plied with a _n_a_m_e that is not a function. ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] ffcc --ss [_p_a_t=_r_e_p] [_c_m_d] - The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t - from the history list and displays or edits and re-executes - them. _F_i_r_s_t and _l_a_s_t 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 _l_a_s_t is not + The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t + from the history list and displays or edits and re-executes + them. _F_i_r_s_t and _l_a_s_t 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 _l_a_s_t is not specified, it is set to the current command for listing (so that - ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- + ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- wise. If _f_i_r_s_t is not specified, it is set to the previous com- mand for editing and -16 for listing. - The --nn option suppresses the command numbers when listing. The - --rr option reverses the order of the commands. If the --ll option - is given, the commands are listed on standard output. Other- - wise, the editor given by _e_n_a_m_e is invoked on a file containing - those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT - variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. - If neither variable is set, _v_i is used. When editing is com- + The --nn option suppresses the command numbers when listing. The + --rr option reverses the order of the commands. If the --ll option + is given, the commands are listed on standard output. Other- + wise, the editor given by _e_n_a_m_e is invoked on a file containing + those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT + variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. + If neither variable is set, _v_i is used. When editing is com- plete, the edited commands are echoed and executed. - In the second form, _c_o_m_m_a_n_d is re-executed after each instance - of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is interpreted the same as - _f_i_r_s_t above. 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, _c_o_m_m_a_n_d is re-executed after each instance + of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is interpreted the same as + _f_i_r_s_t 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 _f_i_r_s_t or _l_a_s_t specify history - lines out of range. If the --ee option is supplied, the return + If the first form is used, the return value is 0 unless an + invalid option is encountered or _f_i_r_s_t or _l_a_s_t specify history + lines out of range. If the --ee 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 _c_m_d does not specify a valid history line, in + form is used, the return status is that of the command re-exe- + cuted, unless _c_m_d does not specify a valid history line, in which case ffcc returns failure. ffgg [_j_o_b_s_p_e_c] - Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. + Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. If _j_o_b_s_p_e_c is not present, the shell's notion of the _c_u_r_r_e_n_t _j_o_b - 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 _j_o_b_s_p_e_c does not spec- - ify a valid job or _j_o_b_s_p_e_c specifies a job that was started + ify a valid job or _j_o_b_s_p_e_c specifies a job that was started without job control. ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g_s] - ggeettooppttss is used by shell procedures to parse positional parame- - ters. _o_p_t_s_t_r_i_n_g 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, ggeettooppttss - places the next option in the shell variable _n_a_m_e, initializing + ggeettooppttss is used by shell procedures to parse positional parame- + ters. _o_p_t_s_t_r_i_n_g 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, ggeettooppttss + places the next option in the shell variable _n_a_m_e, initializing _n_a_m_e if it does not exist, and the index of the next argument to be processed into the variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to - 1 each time the shell or a shell script is invoked. When an - option requires an argument, ggeettooppttss places that argument into - the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD 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, ggeettooppttss places that argument into + the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- + cally; it must be manually reset between multiple calls to ggeettooppttss within the same shell invocation if a new set of parame- ters is to be used. - When the end of options is encountered, ggeettooppttss exits with a - return value greater than zero. OOPPTTIINNDD is set to the index of + When the end of options is encountered, ggeettooppttss exits with a + return value greater than zero. OOPPTTIINNDD is set to the index of the first non-option argument, and _n_a_m_e is set to ?. - ggeettooppttss normally parses the positional parameters, but if more + ggeettooppttss normally parses the positional parameters, but if more arguments are given in _a_r_g_s, ggeettooppttss parses those instead. - ggeettooppttss can report errors in two ways. If the first character - of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In - normal operation, diagnostic messages are printed when invalid - options or missing option arguments are encountered. If the - variable OOPPTTEERRRR is set to 0, no error messages will be dis- + ggeettooppttss can report errors in two ways. If the first character + of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In + normal operation, diagnostic messages are printed when invalid + options or missing option arguments are encountered. If the + variable OOPPTTEERRRR is set to 0, no error messages will be dis- played, even if the first character of _o_p_t_s_t_r_i_n_g is not a colon. If an invalid option is seen, ggeettooppttss places ? into _n_a_m_e and, if - not silent, prints an error message and unsets OOPPTTAARRGG. If - ggeettooppttss is silent, the option character found is placed in + not silent, prints an error message and unsets OOPPTTAARRGG. If + ggeettooppttss is silent, the option character found is placed in OOPPTTAARRGG and no diagnostic message is printed. - If a required argument is not found, and ggeettooppttss is not silent, - a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a - diagnostic message is printed. If ggeettooppttss is silent, then a - colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option + If a required argument is not found, and ggeettooppttss is not silent, + a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a + diagnostic message is printed. If ggeettooppttss is silent, then a + colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option character found. - ggeettooppttss returns true if an option, specified or unspecified, is + ggeettooppttss returns true if an option, specified or unspecified, is found. It returns false if the end of options is encountered or an error occurs. hhaasshh [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e] Each time hhaasshh is invoked, the full pathname of the command _n_a_m_e - is determined by searching the directories in $$PPAATTHH and remem- + is determined by searching the directories in $$PPAATTHH and remem- bered. Any previously-remembered pathname is discarded. If the --pp option is supplied, no path search is performed, and _f_i_l_e_n_a_m_e - is used as the full filename of the command. The --rr option - causes the shell to forget all remembered locations. The --dd - option causes the shell to forget the remembered location of - each _n_a_m_e. If the --tt option is supplied, the full pathname to - which each _n_a_m_e corresponds is printed. If multiple _n_a_m_e argu- - ments are supplied with --tt, the _n_a_m_e is printed before the - hashed full pathname. The --ll option causes output to be dis- + is used as the full filename of the command. The --rr option + causes the shell to forget all remembered locations. The --dd + option causes the shell to forget the remembered location of + each _n_a_m_e. If the --tt option is supplied, the full pathname to + which each _n_a_m_e corresponds is printed. If multiple _n_a_m_e argu- + ments are supplied with --tt, the _n_a_m_e is printed before the + hashed full pathname. The --ll option causes output to be dis- played in a format that may be reused as input. If no arguments - are given, or if only --ll is supplied, information about remem- - bered commands is printed. The return status is true unless a + are given, or if only --ll is supplied, information about remem- + bered commands is printed. The return status is true unless a _n_a_m_e is not found or an invalid option is supplied. hheellpp [--ddmmss] [_p_a_t_t_e_r_n] - Display helpful information about builtin commands. If _p_a_t_t_e_r_n - is specified, hheellpp gives detailed help on all commands matching - _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control + Display helpful information about builtin commands. If _p_a_t_t_e_r_n + is specified, hheellpp gives detailed help on all commands matching + _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control structures is printed. --dd Display a short description of each _p_a_t_t_e_r_n --mm Display the description of each _p_a_t_t_e_r_n in a manpage-like @@ -4876,53 +4905,53 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS hhiissttoorryy --ss _a_r_g [_a_r_g _._._.] With no options, display the command history list with line num- bers. Lines listed with a ** have been modified. An argument of - _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- - FFOORRMMAATT is set and not null, it is used as a format string for - _s_t_r_f_t_i_m_e(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 _f_i_l_e_n_a_m_e is - supplied, it is used as the name of the history file; if not, - the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the + _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- + FFOORRMMAATT is set and not null, it is used as a format string for + _s_t_r_f_t_i_m_e(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 _f_i_l_e_n_a_m_e is + supplied, it is used as the name of the history file; if not, + the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the following meanings: --cc Clear the history list by deleting all the entries. --dd _o_f_f_s_e_t - Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t + Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t 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 + back from the end of the history, and an index of -1 refers to the current hhiissttoorryy --dd command. --dd _s_t_a_r_t-_e_n_d - Delete the history entries between positions _s_t_a_r_t and - _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t + Delete the history entries between positions _s_t_a_r_t and + _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t and _e_n_d are interpreted as described above. - --aa Append the ``new'' history lines to the history file. - These are history lines entered since the beginning of + --aa Append the ``new'' history lines to the history file. + These are history lines entered since the beginning of the current bbaasshh session, but not already appended to the history file. - --nn 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 + --nn 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 bbaasshh session. - --rr Read the contents of the history file and append them to + --rr Read the contents of the history file and append them to the current history list. --ww Write the current history list to the history file, over- writing the history file's contents. - --pp Perform history substitution on the following _a_r_g_s and - display the result on the standard output. Does not - store the results in the history list. Each _a_r_g must be + --pp Perform history substitution on the following _a_r_g_s and + display the result on the standard output. Does not + store the results in the history list. Each _a_r_g must be quoted to disable normal history expansion. - --ss Store the _a_r_g_s in the history list as a single entry. - The last command in the history list is removed before + --ss Store the _a_r_g_s in the history list as a single entry. + The last command in the history list is removed before the _a_r_g_s are added. - If the HHIISSTTTTIIMMEEFFOORRMMAATT 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 HHIISSTTTTIIMMEEFFOORRMMAATT 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 _o_f_f_s_e_t is sup- + reading or writing the history file, an invalid _o_f_f_s_e_t is sup- plied as an argument to --dd, or the history expansion supplied as an argument to --pp fails. @@ -4931,210 +4960,210 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS The first form lists the active jobs. The options have the fol- lowing meanings: --ll List process IDs in addition to the normal information. - --nn Display information only about jobs that have changed + --nn Display information only about jobs that have changed status since the user was last notified of their status. - --pp List only the process ID of the job's process group + --pp List only the process ID of the job's process group leader. --rr Display only running jobs. --ss Display only stopped jobs. - If _j_o_b_s_p_e_c is given, output is restricted to information about - that job. The return status is 0 unless an invalid option is + If _j_o_b_s_p_e_c is given, output is restricted to information about + that job. The return status is 0 unless an invalid option is encountered or an invalid _j_o_b_s_p_e_c is supplied. If the --xx option is supplied, jjoobbss replaces any _j_o_b_s_p_e_c found in - _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and + _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and executes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status. kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ... kkiillll --ll|--LL [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] - Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes - named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive - signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or - a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not - present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the - signal names. If any arguments are supplied when --ll is given, - the names of the signals corresponding to the arguments are + Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes + named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive + signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or + a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not + present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the + signal names. If any arguments are supplied when --ll is given, + the names of the signals corresponding to the arguments are listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to - --ll is a number specifying either a signal number or the exit - status of a process terminated by a signal. The --LL option is - equivalent to --ll. kkiillll returns true if at least one signal was - successfully sent, or false if an error occurs or an invalid + --ll is a number specifying either a signal number or the exit + status of a process terminated by a signal. The --LL option is + equivalent to --ll. kkiillll returns true if at least one signal was + successfully sent, or false if an error occurs or an invalid option is encountered. lleett _a_r_g [_a_r_g ...] Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH-- - MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett + MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett returns 1; 0 is returned otherwise. llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ... | - ] - For each argument, a local variable named _n_a_m_e is created, and - assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted + For each argument, a local variable named _n_a_m_e is created, and + assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted by ddeeccllaarree. When llooccaall is used within a function, it causes the - variable _n_a_m_e to have a visible scope restricted to that func- - tion and its children. If _n_a_m_e is -, the set of shell options - is made local to the function in which llooccaall is invoked: shell - options changed using the sseett builtin inside the function are - restored to their original values when the function returns. - With no operands, llooccaall writes a list of local variables to the - standard output. It is an error to use llooccaall when not within a + variable _n_a_m_e to have a visible scope restricted to that func- + tion and its children. If _n_a_m_e is -, the set of shell options + is made local to the function in which llooccaall is invoked: shell + options changed using the sseett builtin inside the function are + restored to their original values when the function returns. + With no operands, llooccaall writes a list of local variables to the + standard output. It is an error to use llooccaall when not within a function. The return status is 0 unless llooccaall is used outside a - function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly + function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly variable. llooggoouutt Exit a login shell. - mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] - Read lines from the standard input into the indexed array vari- - able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- - plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if + Read lines from the standard input into the indexed array vari- + able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- + plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if supplied, have the following meanings: - --dd The first character of _d_e_l_i_m is used to terminate each - input line, rather than newline. If _d_e_l_i_m is the empty + --dd The first character of _d_e_l_i_m is used to terminate each + input line, rather than newline. If _d_e_l_i_m is the empty string, mmaappffiillee will terminate a line when it reads a NUL character. - --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are + --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are copied. - --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default + --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default index is 0. --ss Discard the first _c_o_u_n_t lines read. - --tt Remove a trailing _d_e_l_i_m (default newline) from each line + --tt Remove a trailing _d_e_l_i_m (default newline) from each line read. - --uu Read lines from file descriptor _f_d instead of the stan- + --uu Read lines from file descriptor _f_d instead of the stan- dard input. - --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The + --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The --cc option specifies _q_u_a_n_t_u_m. - --cc Specify the number of lines read between each call to + --cc Specify the number of lines read between each call to _c_a_l_l_b_a_c_k. - If --CC is specified without --cc, the default quantum is 5000. + If --CC is specified without --cc, the default quantum is 5000. When _c_a_l_l_b_a_c_k 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. _c_a_l_l_b_a_c_k is evaluated after + element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after the line is read but before the array element is assigned. - If not supplied with an explicit origin, mmaappffiillee will clear + If not supplied with an explicit origin, mmaappffiillee will clear _a_r_r_a_y before assigning to it. - mmaappffiillee returns successfully unless an invalid option or option - argument is supplied, _a_r_r_a_y is invalid or unassignable, or if + mmaappffiillee returns successfully unless an invalid option or option + argument is supplied, _a_r_r_a_y is invalid or unassignable, or if _a_r_r_a_y is not an indexed array. ppooppdd [-nn] [+_n] [-_n] - Removes entries from the directory stack. With no arguments, - removes the top directory from the stack, and performs a ccdd to + Removes entries from the directory stack. With no arguments, + removes the top directory from the stack, and performs a ccdd to the new top directory. Arguments, if supplied, have the follow- ing meanings: - --nn Suppresses the normal change of directory when removing - directories from the stack, so that only the stack is + --nn Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is manipulated. - ++_n Removes the _nth entry counting from the left of the list - shown by ddiirrss, starting with zero. For example: ``popd + ++_n Removes the _nth entry counting from the left of the list + shown by ddiirrss, starting with zero. For example: ``popd +0'' removes the first directory, ``popd +1'' the second. --_n Removes the _nth entry counting from the right of the list - shown by ddiirrss, starting with zero. For example: ``popd - -0'' removes the last directory, ``popd -1'' the next to + shown by ddiirrss, starting with zero. For example: ``popd + -0'' removes the last directory, ``popd -1'' the next to last. - If the ppooppdd command is successful, a ddiirrss is performed as well, - and the return status is 0. ppooppdd returns false if an invalid + If the ppooppdd command is successful, a ddiirrss is performed as well, + and the return status is 0. ppooppdd 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. pprriinnttff [--vv _v_a_r] _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s] - Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the - control of the _f_o_r_m_a_t. The --vv option causes the output to be - assigned to the variable _v_a_r rather than being printed to the + Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the + control of the _f_o_r_m_a_t. The --vv option causes the output to be + assigned to the variable _v_a_r rather than being printed to the standard output. - The _f_o_r_m_a_t 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 _a_r_g_u_m_e_n_t. In + The _f_o_r_m_a_t 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 _a_r_g_u_m_e_n_t. In addition to the standard _p_r_i_n_t_f(1) format specifications, pprriinnttff interprets the following extensions: %%bb causes pprriinnttff to expand backslash escape sequences in the corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee. - %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a + %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a format that can be reused as shell input. %%((_d_a_t_e_f_m_t))TT - causes pprriinnttff to output the date-time string resulting - from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). + causes pprriinnttff to output the date-time string resulting + from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). The corresponding _a_r_g_u_m_e_n_t 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 pprriinnttff + 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 pprriinnttff 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 _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- + The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- _m_e_n_t_s. If the _f_o_r_m_a_t requires more _a_r_g_u_m_e_n_t_s 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. ppuusshhdd [--nn] [+_n] [-_n] ppuusshhdd [--nn] [_d_i_r] - 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, ppuusshhdd 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, ppuusshhdd exchanges the top two + directories and returns 0, unless the directory stack is empty. Arguments, if supplied, have the following meanings: - --nn Suppresses the normal change of directory when rotating - or adding directories to the stack, so that only the + --nn Suppresses the normal change of directory when rotating + or adding directories to the stack, so that only the stack is manipulated. - ++_n Rotates the stack so that the _nth directory (counting - from the left of the list shown by ddiirrss, starting with + ++_n Rotates the stack so that the _nth directory (counting + from the left of the list shown by ddiirrss, starting with zero) is at the top. - --_n Rotates the stack so that the _nth directory (counting - from the right of the list shown by ddiirrss, starting with + --_n Rotates the stack so that the _nth directory (counting + from the right of the list shown by ddiirrss, starting with zero) is at the top. _d_i_r Adds _d_i_r 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 ccdd builtin. If the ppuusshhdd command is successful, a ddiirrss is performed as well. - If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r - fails. With the second form, ppuusshhdd 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, ppuusshhdd returns 0 unless the cd to _d_i_r + fails. With the second form, ppuusshhdd 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. ppwwdd [--LLPP] - 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 --PP option is supplied or the --oo pphhyyssiiccaall option to the sseett builtin command - is enabled. If the --LL 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 --LL 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. rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...] - One line is read from the standard input, or from the file - descriptor _f_d supplied as an argument to the --uu option, split - into words as described above under WWoorrdd SSpplliittttiinngg, and the + One line is read from the standard input, or from the file + descriptor _f_d supplied as an argument to the --uu option, split + into words as described above under WWoorrdd SSpplliittttiinngg, and the first word is assigned to the first _n_a_m_e, the second word to the second _n_a_m_e, and so on. If there are more words than names, the remaining words and their intervening delimiters are assigned to - the last _n_a_m_e. If there are fewer words read from the input - stream than names, the remaining names are assigned empty val- - ues. The characters in IIFFSS are used to split the line into + the last _n_a_m_e. If there are fewer words read from the input + stream than names, the remaining names are assigned empty val- + ues. The characters in IIFFSS are used to split the line into words using the same rules the shell uses for expansion (described above under WWoorrdd SSpplliittttiinngg). The backslash character (\\) 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: --aa _a_n_a_m_e The words are assigned to sequential indices of the array @@ -5142,31 +5171,31 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS new values are assigned. Other _n_a_m_e arguments are ignored. --dd _d_e_l_i_m - The first character of _d_e_l_i_m is used to terminate the - input line, rather than newline. If _d_e_l_i_m is the empty - string, rreeaadd will terminate a line when it reads a NUL + The first character of _d_e_l_i_m is used to terminate the + input line, rather than newline. If _d_e_l_i_m is the empty + string, rreeaadd will terminate a line when it reads a NUL character. --ee If the standard input is coming from a terminal, rreeaaddlliinnee - (see RREEAADDLLIINNEE 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- + (see RREEAADDLLIINNEE 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. --ii _t_e_x_t - If rreeaaddlliinnee is being used to read the line, _t_e_x_t is + If rreeaaddlliinnee is being used to read the line, _t_e_x_t is placed into the editing buffer before editing begins. --nn _n_c_h_a_r_s - rreeaadd returns after reading _n_c_h_a_r_s characters rather than + rreeaadd returns after reading _n_c_h_a_r_s characters rather than waiting for a complete line of input, but honors a delim- - iter if fewer than _n_c_h_a_r_s characters are read before the + iter if fewer than _n_c_h_a_r_s characters are read before the delimiter. --NN _n_c_h_a_r_s - rreeaadd returns after reading exactly _n_c_h_a_r_s characters - rather than waiting for a complete line of input, unless - EOF is encountered or rreeaadd times out. Delimiter charac- - ters encountered in the input are not treated specially - and do not cause rreeaadd to return until _n_c_h_a_r_s characters - are read. The result is not split on the characters in - IIFFSS; the intent is that the variable is assigned exactly + rreeaadd returns after reading exactly _n_c_h_a_r_s characters + rather than waiting for a complete line of input, unless + EOF is encountered or rreeaadd times out. Delimiter charac- + ters encountered in the input are not treated specially + and do not cause rreeaadd to return until _n_c_h_a_r_s characters + are read. The result is not split on the characters in + IIFFSS; the intent is that the variable is assigned exactly the characters read (with the exception of backslash; see the --rr option below). --pp _p_r_o_m_p_t @@ -5174,131 +5203,131 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS line, before attempting to read any input. The prompt is displayed only if input is coming from a terminal. --rr 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 + slash is considered to be part of the line. In particu- + lar, a backslash-newline pair may not be used as a line continuation. --ss Silent mode. If input is coming from a terminal, charac- ters are not echoed. --tt _t_i_m_e_o_u_t - Cause rreeaadd to time out and return failure if a complete - line of input (or a specified number of characters) is - not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- - mal number with a fractional portion following the deci- - mal point. This option is only effective if rreeaadd is - reading input from a terminal, pipe, or other special - file; it has no effect when reading from regular files. + Cause rreeaadd to time out and return failure if a complete + line of input (or a specified number of characters) is + not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- + mal number with a fractional portion following the deci- + mal point. This option is only effective if rreeaadd is + reading input from a terminal, pipe, or other special + file; it has no effect when reading from regular files. If rreeaadd times out, rreeaadd saves any partial input read into - the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd - 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 _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd + 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. --uu _f_d Read input from file descriptor _f_d. If no _n_a_m_e_s are supplied, the line read is assigned to the vari- - able RREEPPLLYY. The exit status is zero, unless end-of-file is + able RREEPPLLYY. The exit status is zero, unless end-of-file is encountered, rreeaadd 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 --uu. rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] - The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s - may not be changed by subsequent assignment. If the --ff option - is supplied, the functions corresponding to the _n_a_m_e_s are so - marked. The --aa option restricts the variables to indexed - arrays; the --AA option restricts the variables to associative - arrays. If both options are supplied, --AA takes precedence. If - no _n_a_m_e arguments are given, or if the --pp option is supplied, a + The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s + may not be changed by subsequent assignment. If the --ff option + is supplied, the functions corresponding to the _n_a_m_e_s are so + marked. The --aa option restricts the variables to indexed + arrays; the --AA option restricts the variables to associative + arrays. If both options are supplied, --AA takes precedence. If + no _n_a_m_e arguments are given, or if the --pp 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 --pp option causes output to be displayed in a format - that may be reused as input. If a variable name is followed by - =_w_o_r_d, the value of the variable is set to _w_o_r_d. 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 --pp option causes output to be displayed in a format + that may be reused as input. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return + status is 0 unless an invalid option is encountered, one of the _n_a_m_e_s is not a valid shell variable name, or --ff is supplied with a _n_a_m_e that is not a function. rreettuurrnn [_n] - Causes a function to stop executing and return the value speci- - fied by _n to its caller. If _n is omitted, the return status is - that of the last command executed in the function body. If - rreettuurrnn is executed by a trap handler, the last command used to - determine the status is the last command executed before the - trap handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the - last command used to determine the status is the last command - executed by the trap handler before rreettuurrnn was invoked. If - rreettuurrnn is used outside a function, but during execution of a - script by the .. (ssoouurrccee) command, it causes the shell to stop - executing that script and return either _n or the exit status of - the last command executed within the script as the exit status - of the script. If _n is supplied, the return value is its least - significant 8 bits. The return status is non-zero if rreettuurrnn is - supplied a non-numeric argument, or is used outside a function - and not during execution of a script by .. or ssoouurrccee. Any com- - mand associated with the RREETTUURRNN trap is executed before execu- + Causes a function to stop executing and return the value speci- + fied by _n to its caller. If _n is omitted, the return status is + that of the last command executed in the function body. If + rreettuurrnn is executed by a trap handler, the last command used to + determine the status is the last command executed before the + trap handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the + last command used to determine the status is the last command + executed by the trap handler before rreettuurrnn was invoked. If + rreettuurrnn is used outside a function, but during execution of a + script by the .. (ssoouurrccee) command, it causes the shell to stop + executing that script and return either _n or the exit status of + the last command executed within the script as the exit status + of the script. If _n is supplied, the return value is its least + significant 8 bits. The return status is non-zero if rreettuurrnn is + supplied a non-numeric argument, or is used outside a function + and not during execution of a script by .. or ssoouurrccee. Any com- + mand associated with the RREETTUURRNN trap is executed before execu- tion resumes after the function or script. sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] - Without options, 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 _p_o_s_i_x 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 _p_o_s_i_x _m_o_d_e, 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 - $$11, $$22, ...... $$_n. Options, if specified, have the following + $$11, $$22, ...... $$_n. Options, if specified, have the following meanings: --aa 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. - --bb Report the status of terminated background jobs immedi- + --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. - --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a - single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d + --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a + single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d (see SSHHEELLLL GGRRAAMMMMAARR 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 wwhhiillee - or uunnttiill keyword, part of the test following the iiff or - eelliiff reserved words, part of any command executed in a - &&&& or |||| list except the command following the final &&&& + The shell does not exit if the command that fails is + part of the command list immediately following a wwhhiillee + or uunnttiill keyword, part of the test following the iiff or + eelliiff reserved words, part of any command executed in a + &&&& or |||| list except the command following the final &&&& or ||||, any command in a pipeline but the last, or if the - command's return value is being inverted with !!. If a - compound command other than a subshell returns a non- - zero status because a command failed while --ee was being - ignored, the shell does not exit. A trap on EERRRR, if - set, is executed before the shell exits. This option + command's return value is being inverted with !!. If a + compound command other than a subshell returns a non- + zero status because a command failed while --ee was being + ignored, the shell does not exit. A trap on EERRRR, if + set, is executed before the shell exits. This option applies to the shell environment and each subshell envi- - ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT + ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT 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 --ee is being ignored, none of the commands - executed within the compound command or function body - will be affected by the --ee setting, even if --ee is set - and a command returns a failure status. If a compound - command or shell function sets --ee while executing in a - context where --ee 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 --ee is being ignored, none of the commands + executed within the compound command or function body + will be affected by the --ee setting, even if --ee is set + and a command returns a failure status. If a compound + command or shell function sets --ee while executing in a + context where --ee is ignored, that setting will not have + any effect until the compound command or the command containing the function call completes. --ff Disable pathname expansion. - --hh Remember the location of commands as they are looked up + --hh Remember the location of commands as they are looked up for execution. This is enabled by default. - --kk All arguments in the form of assignment statements are - placed in the environment for a command, not just those + --kk All arguments in the form of assignment statements are + placed in the environment for a command, not just those that precede the command name. - --mm Monitor mode. Job control is enabled. This option is - on by default for interactive shells on systems that - support it (see JJOOBB CCOONNTTRROOLL above). All processes run + --mm Monitor mode. Job control is enabled. This option is + on by default for interactive shells on systems that + support it (see JJOOBB CCOONNTTRROOLL 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. --nn 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. --oo _o_p_t_i_o_n_-_n_a_m_e The _o_p_t_i_o_n_-_n_a_m_e can be one of the following: @@ -5306,10 +5335,10 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS Same as --aa. bbrraacceeeexxppaanndd Same as --BB. - eemmaaccss Use an emacs-style command line editing inter- + eemmaaccss 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 ----nnooeeddiittiinngg option. This also affects the + the ----nnooeeddiittiinngg option. This also affects the editing interface used for rreeaadd --ee. eerrrreexxiitt Same as --ee. eerrrrttrraaccee @@ -5323,8 +5352,8 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS HHIISSTTOORRYY. This option is on by default in inter- active shells. iiggnnoorreeeeooff - The effect is as if the shell command - ``IGNOREEOF=10'' had been executed (see SShheellll + The effect is as if the shell command + ``IGNOREEOF=10'' had been executed (see SShheellll VVaarriiaabblleess above). kkeeyywwoorrdd Same as --kk. mmoonniittoorr Same as --mm. @@ -5339,384 +5368,384 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS pphhyyssiiccaall Same as --PP. ppiippeeffaaiill - 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. - ppoossiixx Change the behavior of bbaasshh where the default - operation differs from the POSIX standard to - match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO + ppoossiixx Change the behavior of bbaasshh where the default + operation differs from the POSIX standard to + match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO below for a reference to a document that details how posix mode affects bash's behavior. pprriivviilleeggeedd Same as --pp. vveerrbboossee Same as --vv. - vvii Use a vi-style command line editing interface. + vvii Use a vi-style command line editing interface. This also affects the editing interface used for rreeaadd --ee. xxttrraaccee Same as --xx. If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the values of the - current options are printed. If ++oo is supplied with no - _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the - current option settings is displayed on the standard + current options are printed. If ++oo is supplied with no + _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the + current option settings is displayed on the standard output. - --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and - $$BBAASSHH__EENNVV files are not processed, shell functions are - not inherited from the environment, and the SSHHEELLLLOOPPTTSS, - BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they + --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and + $$BBAASSHH__EENNVV files are not processed, shell functions are + not inherited from the environment, and the SSHHEELLLLOOPPTTSS, + BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE 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 --pp option is not sup- + started with the effective user (group) id not equal to + the real user (group) id, and the --pp option is not sup- plied, these actions are taken and the effective user id - is set to the real user id. If the --pp 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 --pp 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. --tt Exit after reading and executing one command. --uu 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. --vv Print shell input lines as they are read. - --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee + --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee command, sseelleecctt command, or arithmetic ffoorr command, dis- - play the expanded value of PPSS44, followed by the command + play the expanded value of PPSS44, followed by the command and its expanded arguments or associated word list. - --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn + --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn above). This is on by default. - --CC If set, bbaasshh does not overwrite an existing file with - the >>, >>&&, and <<>> redirection operators. This may be + --CC If set, bbaasshh does not overwrite an existing file with + the >>, >>&&, and <<>> redirection operators. This may be overridden when creating output files by using the redi- rection operator >>|| instead of >>. --EE If set, any trap on EERRRR is inherited by shell functions, - command substitutions, and commands executed in a sub- - shell environment. The EERRRR trap is normally not inher- + command substitutions, and commands executed in a sub- + shell environment. The EERRRR trap is normally not inher- ited in such cases. --HH Enable !! style history substitution. This option is on by default when the shell is interactive. - --PP If set, the shell does not resolve symbolic links when - executing commands such as ccdd that change the current + --PP If set, the shell does not resolve symbolic links when + executing commands such as ccdd that change the current working directory. It uses the physical directory structure instead. By default, bbaasshh follows the logical - chain of directories when performing commands which + chain of directories when performing commands which change the current directory. - --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by - shell functions, command substitutions, and commands - executed in a subshell environment. The DDEEBBUUGG and + --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by + shell functions, command substitutions, and commands + executed in a subshell environment. The DDEEBBUUGG and RREETTUURRNN traps are normally not inherited in such cases. - ---- If no arguments follow this option, then the positional + ---- If no arguments follow this option, then the positional parameters are unset. Otherwise, the positional parame- - ters are set to the _a_r_gs, even if some of them begin + ters are set to the _a_r_gs, even if some of them begin with a --. - -- Signal the end of options, cause all remaining _a_r_gs to + -- Signal the end of options, cause all remaining _a_r_gs to be assigned to the positional parameters. The --xx and --vv options are turned off. If there are no _a_r_gs, 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 $$--. 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 $$--. The return status is always true unless an invalid option is encoun- tered. sshhiifftt [_n] - The positional parameters from _n+1 ... are renamed to $$11 ........ - Parameters represented by the numbers $$## down to $$##-_n+1 are - unset. _n must be a non-negative number less than or equal to - $$##. If _n is 0, no parameters are changed. If _n is not given, - it is assumed to be 1. If _n is greater than $$##, the positional - parameters are not changed. The return status is greater than + The positional parameters from _n+1 ... are renamed to $$11 ........ + Parameters represented by the numbers $$## down to $$##-_n+1 are + unset. _n must be a non-negative number less than or equal to + $$##. If _n is 0, no parameters are changed. If _n is not given, + it is assumed to be 1. If _n is greater than $$##, the positional + parameters are not changed. The return status is greater than zero if _n is greater than $$## or less than zero; otherwise 0. sshhoopptt [--ppqqssuu] [--oo] [_o_p_t_n_a_m_e ...] - 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 --oo option is used, those available with the --oo option to the sseett builtin command. With no options, or with the --pp option, a list - of all settable options is displayed, with an indication of + of all settable options is displayed, with an indication of whether or not each is set; if _o_p_t_n_a_m_e_s are supplied, the output - is restricted to those options. The --pp option causes output to - be displayed in a form that may be reused as input. Other + is restricted to those options. The --pp option causes output to + be displayed in a form that may be reused as input. Other options have the following meanings: --ss Enable (set) each _o_p_t_n_a_m_e. --uu Disable (unset) each _o_p_t_n_a_m_e. - --qq Suppresses normal output (quiet mode); the return status + --qq Suppresses normal output (quiet mode); the return status indicates whether the _o_p_t_n_a_m_e is set or unset. If multi- - ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- - tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- + ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- + tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- wise. - --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for + --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for the --oo option to the sseett builtin. - If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt - shows only those options which are set or unset, respectively. - Unless otherwise noted, the sshhoopptt options are disabled (unset) + If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt + shows only those options which are set or unset, respectively. + Unless otherwise noted, the sshhoopptt options are disabled (unset) by default. - The return status when listing options is zero if all _o_p_t_n_a_m_e_s - are enabled, non-zero otherwise. When setting or unsetting - options, the return status is zero unless an _o_p_t_n_a_m_e is not a + The return status when listing options is zero if all _o_p_t_n_a_m_e_s + are enabled, non-zero otherwise. When setting or unsetting + options, the return status is zero unless an _o_p_t_n_a_m_e is not a valid shell option. The list of sshhoopptt options is: aassssoocc__eexxppaanndd__oonnccee - If set, the shell suppresses multiple evaluation of - associative array subscripts during arithmetic expres- - sion evaluation and while executing builtins that can + If set, the shell suppresses multiple evaluation of + associative array subscripts during arithmetic expres- + sion evaluation and while executing builtins that can perform variable assignments. - aauuttooccdd If set, a command name that is the name of a directory - is executed as if it were the argument to the ccdd com- + aauuttooccdd If set, a command name that is the name of a directory + is executed as if it were the argument to the ccdd com- mand. This option is only used by interactive shells. ccddaabbllee__vvaarrss - If set, an argument to the ccdd builtin command that is - not a directory is assumed to be the name of a variable + If set, an argument to the ccdd builtin command that is + not a directory is assumed to be the name of a variable whose value is the directory to change to. ccddssppeellll If set, minor errors in the spelling of a directory com- - ponent in a ccdd command will be corrected. The errors + ponent in a ccdd 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. cchheecckkhhaasshh If set, bbaasshh 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. cchheecckkjjoobbss If set, bbaasshh 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 JJOOBB CCOONNTTRROOLL above). The shell always postpones + second exit is attempted without an intervening command + (see JJOOBB CCOONNTTRROOLL above). The shell always postpones exiting if any jobs are stopped. cchheecckkwwiinnssiizzee - If set, bbaasshh checks the window size after each external - (non-builtin) command and, if necessary, updates the + If set, bbaasshh checks the window size after each external + (non-builtin) command and, if necessary, updates the values of LLIINNEESS and CCOOLLUUMMNNSS. - ccmmddhhiisstt If set, bbaasshh 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 + ccmmddhhiisstt If set, bbaasshh 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 HHIISSTTOORRYY. ccoommppaatt3311 If set, bbaasshh changes its behavior to that of version 3.1 - with respect to quoted arguments to the [[[[ conditional + with respect to quoted arguments to the [[[[ conditional command's ==~~ operator and locale-specific string compar- - ison when using the [[[[ conditional command's << and >> - operators. Bash versions prior to bash-4.1 use ASCII + ison when using the [[[[ conditional command's << and >> + operators. Bash versions prior to bash-4.1 use ASCII collation and _s_t_r_c_m_p(3); bash-4.1 and later use the cur- rent locale's collation sequence and _s_t_r_c_o_l_l(3). ccoommppaatt3322 If set, bbaasshh changes its behavior to that of version 3.2 - with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators - (see previous item) 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 [[[[ conditional command's << and >> operators + (see previous item) and the effect of interrupting a + command list. Bash versions 3.2 and earlier continue + with the next command in the list after one terminates due to an interrupt. ccoommppaatt4400 If set, bbaasshh changes its behavior to that of version 4.0 - with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators - (see description of ccoommppaatt3311) and the effect of inter- - rupting a command list. Bash versions 4.0 and later - interrupt the list as if the shell received the inter- - rupt; previous versions continue with the next command + with respect to locale-specific string comparison when + using the [[[[ conditional command's << and >> operators + (see description of ccoommppaatt3311) and the effect of inter- + rupting a command list. Bash versions 4.0 and later + interrupt the list as if the shell received the inter- + rupt; previous versions continue with the next command in the list. ccoommppaatt4411 - If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote - in a double-quoted parameter expansion as a special - character. The single quotes must match (an even num- - ber) and the characters between the single quotes are - considered quoted. This is the behavior of posix mode - through version 4.1. The default bash behavior remains + If set, bbaasshh, when in _p_o_s_i_x _m_o_d_e, treats a single quote + in a double-quoted parameter expansion as a special + character. The single quotes must match (an even num- + ber) and the characters between the single quotes are + considered quoted. This is the behavior of posix mode + through version 4.1. The default bash behavior remains as in previous versions. ccoommppaatt4422 - If set, bbaasshh does not process the replacement string in - the pattern substitution word expansion using quote + If set, bbaasshh does not process the replacement string in + the pattern substitution word expansion using quote removal. ccoommppaatt4433 - If set, bbaasshh does not print a warning message if an - attempt is made to use a quoted compound array assign- - ment as an argument to ddeeccllaarree, makes word expansion - errors non-fatal errors that cause the current command - to fail (the default behavior is to make them fatal + If set, bbaasshh does not print a warning message if an + attempt is made to use a quoted compound array assign- + ment as an argument to ddeeccllaarree, makes word expansion + errors non-fatal errors that cause the current command + to fail (the default behavior is to make them fatal errors that cause the shell to exit), and does not reset - the loop state when a shell function is executed (this - allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect + the loop state when a shell function is executed (this + allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect loops in the caller's context). ccoommppaatt4444 - If set, bbaasshh saves the positional parameters to + If set, bbaasshh saves the positional parameters to BASH_ARGV and BASH_ARGC before they are used, regardless of whether or not extended debugging mode is enabled. ccoommpplleettee__ffuullllqquuoottee - If set, bbaasshh quotes all shell metacharacters in file- - names and directory names when performing completion. + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. If not set, bbaasshh removes metacharacters such as the dol- - lar sign from the set of characters that will be quoted - in completed filenames when these metacharacters appear - in shell variable references in words to be completed. - This means that dollar signs in variable names that - expand to directories will not be quoted; however, any - dollar signs appearing in filenames will not be quoted, - either. This is active only when bash is using back- - slashes to quote completed filenames. This variable is - set by default, which is the default bash behavior in + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that + expand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in versions through 4.2. ddiirreexxppaanndd - If set, bbaasshh replaces directory names with the results - of word expansion when performing filename completion. - This changes the contents of the readline editing buf- - fer. If not set, bbaasshh attempts to preserve what the + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing buf- + fer. If not set, bbaasshh attempts to preserve what the user typed. ddiirrssppeellll - If set, bbaasshh attempts spelling correction on directory - names during word completion if the directory name ini- + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in - the results of pathname expansion. The filenames ````..'''' - and ````....'''' must always be matched explicitly, even if + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + the results of pathname expansion. The filenames ````..'''' + and ````....'''' must always be matched explicitly, even if ddoottgglloobb is set. eexxeeccffaaiill If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not + not execute the file specified as an argument to the + eexxeecc builtin command. An interactive shell does not exit if eexxeecc fails. eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under + If set, aliases are expanded as described above under AALLIIAASSEESS. This option is enabled by default for interac- tive shells. eexxttddeebbuugg - If set at shell invocation, arrange to execute the - debugger profile before the shell starts, identical to - the ----ddeebbuuggggeerr option. If set after invocation, behav- + If set at shell invocation, arrange to execute the + debugger profile before the shell starts, identical to + the ----ddeebbuuggggeerr option. If set after invocation, behav- ior intended for use by debuggers is enabled: 11.. The --FF option to the ddeeccllaarree builtin displays the source file name and line number corresponding to each function name supplied as an argument. - 22.. If the command run by the DDEEBBUUGG trap returns a - non-zero value, the next command is skipped and + 22.. If the command run by the DDEEBBUUGG trap returns a + non-zero value, the next command is skipped and not executed. - 33.. If the command run by the DDEEBBUUGG trap returns a - value of 2, and the shell is executing in a sub- - routine (a shell function or a shell script exe- - cuted by the .. or ssoouurrccee builtins), the shell + 33.. If the command run by the DDEEBBUUGG trap returns a + value of 2, and the shell is executing in a sub- + routine (a shell function or a shell script exe- + cuted by the .. or ssoouurrccee builtins), the shell simulates a call to rreettuurrnn. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described + 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described in their descriptions above. - 55.. Function tracing is enabled: command substitu- + 55.. Function tracing is enabled: command substitu- tion, shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps. - 66.. Error tracing is enabled: command substitution, - shell functions, and subshells invoked with (( + 66.. Error tracing is enabled: command substitution, + shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the EERRRR trap. eexxttgglloobb If set, the extended pattern matching features described above under PPaatthhnnaammee EExxppaannssiioonn are enabled. eexxttqquuoottee - If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed - within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double + If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed + within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double quotes. This option is enabled by default. ffaaiillgglloobb - If set, patterns which fail to match filenames during + If set, patterns which fail to match filenames during pathname expansion result in an expansion error. ffoorrccee__ffiiggnnoorree - If set, the suffixes specified by the FFIIGGNNOORREE shell - variable cause words to be ignored when performing word + If set, the suffixes specified by the FFIIGGNNOORREE shell + variable cause words to be ignored when performing word completion even if the ignored words are the only possi- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a - description of FFIIGGNNOORREE. This option is enabled by + description of FFIIGGNNOORREE. This option is enabled by default. gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching - bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave - as if in the traditional C locale when performing com- + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave + as if in the traditional C locale when performing com- parisons. That is, the current locale's collating - sequence is not taken into account, so bb will not col- - late between AA and BB, and upper-case and lower-case + sequence is not taken into account, so bb will not col- + late between AA and BB, and upper-case and lower-case ASCII characters will collate together. gglloobbssttaarr If set, the pattern **** used in a pathname expansion con- - text will match all files and zero or more directories - and subdirectories. If the pattern is followed by a //, + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, only directories and subdirectories match. ggnnuu__eerrrrffmmtt If set, shell error messages are written in the standard GNU error message format. hhiissttaappppeenndd - If set, the history list is appended to the file named - by the value of the HHIISSTTFFIILLEE variable when the shell + If set, the history list is appended to the file named + by the value of the HHIISSTTFFIILLEE variable when the shell exits, rather than overwriting the file. hhiissttrreeeeddiitt - If set, and rreeaaddlliinnee is being used, a user is given the + If set, and rreeaaddlliinnee is being used, a user is given the opportunity to re-edit a failed history substitution. hhiissttvveerriiffyy - If set, and rreeaaddlliinnee is being used, the results of his- - tory substitution are not immediately passed to the - shell parser. Instead, the resulting line is loaded + If set, and rreeaaddlliinnee is being used, the results of his- + tory substitution are not immediately passed to the + shell parser. Instead, the resulting line is loaded into the rreeaaddlliinnee editing buffer, allowing further modi- fication. hhoossttccoommpplleettee If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to - perform hostname completion when a word containing a @@ - is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE + perform hostname completion when a word containing a @@ + is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE above). This is enabled by default. hhuuppoonneexxiitt If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- active login shell exits. iinnhheerriitt__eerrrreexxiitt - If set, command substitution inherits the value of the - eerrrreexxiitt option, instead of unsetting it in the subshell - environment. This option is enabled when _p_o_s_i_x _m_o_d_e is + If set, command substitution inherits the value of the + eerrrreexxiitt option, instead of unsetting it in the subshell + environment. This option is enabled when _p_o_s_i_x _m_o_d_e is enabled. iinntteerraaccttiivvee__ccoommmmeennttss If set, allow a word beginning with ## to cause that word - and all remaining characters on that line to be ignored - in an interactive shell (see CCOOMMMMEENNTTSS above). This + and all remaining characters on that line to be ignored + in an interactive shell (see CCOOMMMMEENNTTSS above). This option is enabled by default. llaassttppiippee - 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. - lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line + lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. llooccaallvvaarr__iinnhheerriitt 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 + scope before any new value is assigned. The nameref attribute is not inherited. llooggiinn__sshheellll - The shell sets this option if it is started as a login - shell (see IINNVVOOCCAATTIIOONN above). The value may not be + The shell sets this option if it is started as a login + shell (see IINNVVOOCCAATTIIOONN above). The value may not be changed. mmaaiillwwaarrnn - If set, and a file that bbaasshh is checking for mail has - been accessed since the last time it was checked, the - message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis- + If set, and a file that bbaasshh is checking for mail has + been accessed since the last time it was checked, the + message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis- played. nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn - If set, and rreeaaddlliinnee is being used, bbaasshh will not + If set, and rreeaaddlliinnee is being used, bbaasshh will not attempt to search the PPAATTHH for possible completions when completion is attempted on an empty line. nnooccaasseegglloobb - If set, bbaasshh matches filenames in a case-insensitive + If set, bbaasshh matches filenames in a case-insensitive fashion when performing pathname expansion (see PPaatthhnnaammee EExxppaannssiioonn above). nnooccaasseemmaattcchh - If set, bbaasshh matches patterns in a case-insensitive + If set, bbaasshh matches patterns in a case-insensitive fashion when performing matching while executing ccaassee or [[[[ 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. nnuullllgglloobb - If set, bbaasshh allows patterns which match no files (see - PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, + If set, bbaasshh allows patterns which match no files (see + PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, rather than themselves. pprrooggccoommpp If set, the programmable completion facilities (see PPrroo-- @@ -5724,50 +5753,50 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS enabled by default. pprroommppttvvaarrss If set, prompt strings undergo parameter expansion, com- - mand substitution, arithmetic expansion, and quote - removal after being expanded as described in PPRROOMMPPTTIINNGG + mand substitution, arithmetic expansion, and quote + removal after being expanded as described in PPRROOMMPPTTIINNGG above. This option is enabled by default. rreessttrriicctteedd__sshheellll - The shell sets this option if it is started in + The shell sets this option if it is started in restricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL 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. sshhiifftt__vveerrbboossee - If set, the sshhiifftt builtin prints an error message when + If set, the sshhiifftt builtin prints an error message when the shift count exceeds the number of positional parame- ters. ssoouurrcceeppaatthh If set, the ssoouurrccee (..) builtin uses the value of PPAATTHH 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. xxppgg__eecchhoo - If set, the eecchhoo builtin expands backslash-escape + If set, the eecchhoo builtin expands backslash-escape sequences by default. ssuussppeenndd [--ff] - Suspend the execution of this shell until it receives a SSIIGGCCOONNTT + Suspend the execution of this shell until it receives a SSIIGGCCOONNTT signal. A login shell cannot be suspended; the --ff 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 --ff is not sup- + tus is 0 unless the shell is a login shell and --ff is not sup- plied, or if job control is not enabled. tteesstt _e_x_p_r [[ _e_x_p_r ]] Return a status of 0 (true) or 1 (false) depending on the evalu- ation of the conditional expression _e_x_p_r. Each operator and op- - erand must be a separate argument. Expressions are composed of - the primaries described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. - tteesstt 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 CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. + tteesstt does not accept any options, nor does it accept and ignore an argument of ---- 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. !! _e_x_p_r True if _e_x_p_r is false. (( _e_x_p_r )) - Returns the value of _e_x_p_r. This may be used to override + Returns the value of _e_x_p_r. This may be used to override the normal precedence of operators. _e_x_p_r_1 -aa _e_x_p_r_2 True if both _e_x_p_r_1 and _e_x_p_r_2 are true. @@ -5784,120 +5813,120 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS null. 2 arguments If the first argument is !!, 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 CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, 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 CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, 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 CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the result of the expression is the result of the binary test - using the first and third arguments as operands. The --aa - and --oo 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 + using the first and third arguments as operands. The --aa + and --oo 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. Other- + is the one-argument test of the second argument. Other- wise, the expression is false. 4 arguments If the first argument is !!, 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 tteesstt or [[, the << and >> operators sort lexico- + When used with tteesstt or [[, the << and >> operators sort lexico- graphically using ASCII ordering. - ttiimmeess Print the accumulated user and system times for the shell and + ttiimmeess Print the accumulated user and system times for the shell and for processes run from the shell. The return status is 0. ttrraapp [--llpp] [[_a_r_g] _s_i_g_s_p_e_c ...] - The command _a_r_g is to be read and executed when the shell - receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a - single _s_i_g_s_p_e_c) or --, each specified signal is reset to its - original disposition (the value it had upon entrance to the - shell). If _a_r_g is the null string the signal specified by each - _s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes. - If _a_r_g is not present and --pp has been supplied, then the trap - commands associated with each _s_i_g_s_p_e_c are displayed. If no - arguments are supplied or if only --pp is given, ttrraapp prints the - list of commands associated with each signal. The --ll option - causes the shell to print a list of signal names and their cor- - responding numbers. Each _s_i_g_s_p_e_c is either a signal name - defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are + The command _a_r_g is to be read and executed when the shell + receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a + single _s_i_g_s_p_e_c) or --, each specified signal is reset to its + original disposition (the value it had upon entrance to the + shell). If _a_r_g is the null string the signal specified by each + _s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes. + If _a_r_g is not present and --pp has been supplied, then the trap + commands associated with each _s_i_g_s_p_e_c are displayed. If no + arguments are supplied or if only --pp is given, ttrraapp prints the + list of commands associated with each signal. The --ll option + causes the shell to print a list of signal names and their cor- + responding numbers. Each _s_i_g_s_p_e_c is either a signal name + defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are case insensitive and the SSIIGG prefix is optional. - If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit - from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- - cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, - _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the - first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR - above). Refer to the description of the eexxttddeebbuugg option to the + If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit + from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- + cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, + _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the + first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR + above). Refer to the description of the eexxttddeebbuugg option to the sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a _s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell function or a script executed with the .. or ssoouurrccee builtins fin- ishes executing. - If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a + If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a pipeline (which may consist of a single simple command), a list, or a compound command returns a non-zero exit status, subject to - the following conditions. The EERRRR trap is not executed if the + the following conditions. The EERRRR trap is not executed if the failed command is part of the command list immediately following - a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, + a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, part of a command executed in a &&&& or |||| list except the command - following the final &&&& or ||||, any command in a pipeline but the - last, or if the command's return value is being inverted using - !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) + following the final &&&& or ||||, any command in a pipeline but the + last, or if the command's return value is being inverted using + !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) 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 _s_i_g_s_p_e_c is + one is created. The return status is false if any _s_i_g_s_p_e_c is invalid; otherwise ttrraapp returns true. ttyyppee [--aaffttppPP] _n_a_m_e [_n_a_m_e ...] - With no options, indicate how each _n_a_m_e would be interpreted if + With no options, indicate how each _n_a_m_e would be interpreted if used as a command name. If the --tt option is used, ttyyppee prints a - string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or - _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function, - builtin, or disk file, respectively. If the _n_a_m_e is not found, - then nothing is printed, and an exit status of false is - returned. If the --pp option is used, ttyyppee either returns the + string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or + _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function, + builtin, or disk file, respectively. If the _n_a_m_e is not found, + then nothing is printed, and an exit status of false is + returned. If the --pp option is used, ttyyppee either returns the name of the disk file that would be executed if _n_a_m_e were speci- fied as a command name, or nothing if ``type -t name'' would not - return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e, + return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e, even if ``type -t name'' would not return _f_i_l_e. If a command is hashed, --pp and --PP print the hashed value, which is not necessar- - ily the file that appears first in PPAATTHH. If the --aa option is - used, ttyyppee prints all of the places that contain an executable + ily the file that appears first in PPAATTHH. If the --aa option is + used, ttyyppee prints all of the places that contain an executable named _n_a_m_e. This includes aliases and functions, if and only if the --pp option is not also used. The table of hashed commands is - not consulted when using --aa. The --ff option suppresses shell + not consulted when using --aa. The --ff option suppresses shell function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true if all of the arguments are found, false if any are not found. uulliimmiitt [--HHSSaabbccddeeffiikkllmmnnppqqrrssttuuvvxxPPTT [_l_i_m_i_t]] - 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 --HH and --SS 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 --HH nor --SS 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 --HH nor --SS is speci- fied, both the soft and hard limits are set. The value of _l_i_m_i_t can be a number in the unit specified for the resource or one of the special values hhaarrdd, ssoofftt, or uunnlliimmiitteedd, which stand for the - current hard limit, the current soft limit, and no limit, - respectively. If _l_i_m_i_t is omitted, the current value of the - soft limit of the resource is printed, unless the --HH option is + current hard limit, the current soft limit, and no limit, + respectively. If _l_i_m_i_t is omitted, the current value of the + soft limit of the resource is printed, unless the --HH 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: @@ -5906,12 +5935,12 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --cc The maximum size of core files created --dd The maximum size of a process's data segment --ee The maximum scheduling priority ("nice") - --ff The maximum size of files written by the shell and its + --ff The maximum size of files written by the shell and its children --ii The maximum number of pending signals --kk The maximum number of kqueues that may be allocated --ll The maximum size that may be locked into memory - --mm The maximum resident set size (many systems do not honor + --mm The maximum resident set size (many systems do not honor this limit) --nn The maximum number of open file descriptors (most systems do not allow this value to be set) @@ -5920,53 +5949,53 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS --rr The maximum real-time scheduling priority --ss The maximum stack size --tt The maximum amount of cpu time in seconds - --uu The maximum number of processes available to a single + --uu The maximum number of processes available to a single user - --vv The maximum amount of virtual memory available to the + --vv The maximum amount of virtual memory available to the shell and, on some systems, to its children --xx The maximum number of file locks --PP The maximum number of pseudoterminals --TT The maximum number of threads - If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the - new value of the specified resource. If no option is given, - then --ff is assumed. Values are in 1024-byte increments, except - for --tt, which is in seconds; --pp, which is in units of 512-byte - blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values; - and, when in Posix mode, --cc and --ff, which are in 512-byte incre- + If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the + new value of the specified resource. If no option is given, + then --ff is assumed. Values are in 1024-byte increments, except + for --tt, which is in seconds; --pp, which is in units of 512-byte + blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values; + and, when in posix mode, --cc and --ff, 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. uummaasskk [--pp] [--SS] [_m_o_d_e] The user file-creation mask is set to _m_o_d_e. If _m_o_d_e 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 - _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is - printed. The --SS option causes the mask to be printed in sym- - bolic form; the default output is an octal number. If the --pp + a digit, it is interpreted as an octal number; otherwise it is + interpreted as a symbolic mode mask similar to that accepted by + _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is + printed. The --SS option causes the mask to be printed in sym- + bolic form; the default output is an octal number. If the --pp option is supplied, and _m_o_d_e 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 _m_o_d_e argument was supplied, + was successfully changed or if no _m_o_d_e argument was supplied, and false otherwise. uunnaalliiaass [-aa] [_n_a_m_e ...] - Remove each _n_a_m_e from the list of defined aliases. If --aa is - supplied, all alias definitions are removed. The return value + Remove each _n_a_m_e from the list of defined aliases. If --aa is + supplied, all alias definitions are removed. The return value is true unless a supplied _n_a_m_e is not a defined alias. uunnsseett [-ffvv] [-nn] [_n_a_m_e ...] - For each _n_a_m_e, remove the corresponding variable or function. + For each _n_a_m_e, remove the corresponding variable or function. If the --vv option is given, each _n_a_m_e refers to a shell variable, - and that variable is removed. Read-only variables may not be - unset. If --ff is specified, each _n_a_m_e refers to a shell func- - tion, and the function definition is removed. If the --nn option - is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, - _n_a_m_e will be unset rather than the variable it references. --nn - has no effect if the --ff option is supplied. If no options are - supplied, each _n_a_m_e 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 CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- + and that variable is removed. Read-only variables may not be + unset. If --ff is specified, each _n_a_m_e refers to a shell func- + tion, and the function definition is removed. If the --nn option + is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, + _n_a_m_e will be unset rather than the variable it references. --nn + has no effect if the --ff option is supplied. If no options are + supplied, each _n_a_m_e 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 CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- DDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are unset, they lose their special properties, even if they are sub- sequently reset. The exit status is true unless a _n_a_m_e is read- @@ -5974,23 +6003,23 @@ SSHHEELLLL BBUUIILLTTIINN CCOOMMMMAANNDDSS wwaaiitt [--ffnn] [_i_d _._._.] Wait for each specified child process and return its termination - status. Each _i_d may be a process ID or a job specification; if - a job spec is given, all processes in that job's pipeline are + status. Each _i_d 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_d is not given, all currently active child pro- cesses are waited for, and the return status is zero. If the --nn - option is supplied, wwaaiitt waits for any job to terminate and - returns its exit status. If the --ff option is supplied, and job + option is supplied, wwaaiitt waits for any job to terminate and + returns its exit status. If the --ff option is supplied, and job control is enabled, wwaaiitt forces _i_d to terminate before returning - its status, instead of returning when it changes status. If _i_d - specifies a non-existent process or job, the return status is - 127. Otherwise, the return status is the exit status of the + its status, instead of returning when it changes status. If _i_d + 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. RREESSTTRRIICCTTEEDD SSHHEELLLL If bbaasshh is started with the name rrbbaasshh, or the --rr 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 bbaasshh 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 bbaasshh with the exception that the following are disallowed or not performed: +o changing directories with ccdd @@ -5999,16 +6028,16 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o specifying command names containing // - +o specifying a filename containing a // as an argument to the .. + +o specifying a filename containing a // as an argument to the .. builtin command - +o specifying a filename containing a slash as an argument to the + +o specifying a filename containing a slash as an argument to the --pp option to the hhaasshh builtin command - +o importing function definitions from the shell environment at + +o importing function definitions from the shell environment at startup - +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at + +o parsing the value of SSHHEELLLLOOPPTTSS from the shell environment at startup +o redirecting output using the >, >|, <>, >&, &>, and >> redirect- @@ -6017,10 +6046,10 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL +o using the eexxeecc builtin command to replace the shell with another command - +o adding or deleting builtin commands with the --ff and --dd options + +o adding or deleting builtin commands with the --ff and --dd options to the eennaabbllee builtin command - +o using the eennaabbllee builtin command to enable disabled shell + +o using the eennaabbllee builtin command to enable disabled shell builtins +o specifying the --pp option to the ccoommmmaanndd builtin command @@ -6030,14 +6059,14 @@ RREESSTTRRIICCTTEEDD SSHHEELLLL These restrictions are enforced after any startup files are read. When a command that is found to be a shell script is executed (see CCOOMM-- - MMAANNDD EEXXEECCUUTTIIOONN above), rrbbaasshh turns off any restrictions in the shell + MMAANNDD EEXXEECCUUTTIIOONN above), rrbbaasshh turns off any restrictions in the shell spawned to execute the script. SSEEEE AALLSSOO _B_a_s_h _R_e_f_e_r_e_n_c_e _M_a_n_u_a_l, Brian Fox and Chet Ramey _T_h_e _G_n_u _R_e_a_d_l_i_n_e _L_i_b_r_a_r_y, Brian Fox and Chet Ramey _T_h_e _G_n_u _H_i_s_t_o_r_y _L_i_b_r_a_r_y, Brian Fox and Chet Ramey - _P_o_r_t_a_b_l_e _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _I_n_t_e_r_f_a_c_e _(_P_O_S_I_X_) _P_a_r_t _2_: _S_h_e_l_l _a_n_d _U_t_i_l_i_- + _P_o_r_t_a_b_l_e _O_p_e_r_a_t_i_n_g _S_y_s_t_e_m _I_n_t_e_r_f_a_c_e _(_P_O_S_I_X_) _P_a_r_t _2_: _S_h_e_l_l _a_n_d _U_t_i_l_i_- _t_i_e_s, IEEE -- http://pubs.opengroup.org/onlinepubs/9699919799/ http://tiswww.case.edu/~chet/bash/POSIX -- a description of posix mode @@ -6055,7 +6084,7 @@ FFIILLEESS _~_/_._b_a_s_h_r_c The individual per-interactive-shell startup file _~_/_._b_a_s_h___l_o_g_o_u_t - The individual login shell cleanup file, executed when a login + The individual login shell cleanup file, executed when a login shell exits _~_/_._i_n_p_u_t_r_c Individual _r_e_a_d_l_i_n_e initialization file @@ -6069,14 +6098,14 @@ AAUUTTHHOORRSS BBUUGG RREEPPOORRTTSS If you find a bug in bbaasshh,, 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 bbaasshh. The latest version is always available from + make sure that it really is a bug, and that it appears in the latest + version of bbaasshh. The latest version is always available from _f_t_p_:_/_/_f_t_p_._g_n_u_._o_r_g_/_p_u_b_/_g_n_u_/_b_a_s_h_/. - Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g - 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 _b_u_g_-_b_a_s_h_@_g_n_u_._o_r_g or posted to the Usenet newsgroup + Once you have determined that a bug actually exists, use the _b_a_s_h_b_u_g + 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 _b_u_g_-_b_a_s_h_@_g_n_u_._o_r_g or posted to the Usenet newsgroup ggnnuu..bbaasshh..bbuugg. ALL bug reports should include: @@ -6087,7 +6116,7 @@ BBUUGG RREEPPOORRTTSS A description of the bug behaviour A short script or `recipe' which exercises the bug - _b_a_s_h_b_u_g inserts the first three items automatically into the template + _b_a_s_h_b_u_g inserts 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 @@ -6104,10 +6133,10 @@ BBUUGGSS 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. @@ -6116,4 +6145,4 @@ BBUUGGSS -GNU Bash 5.0 2018 March 15 BASH(1) +GNU Bash 5.0 2018 August 7 BASH(1) diff --git a/doc/bash.1 b/doc/bash.1 index cf712fe34..9561ed87a 100644 --- a/doc/bash.1 +++ b/doc/bash.1 @@ -5,12 +5,12 @@ .\" Case Western Reserve University .\" chet.ramey@case.edu .\" -.\" Last Change: Thu Mar 15 11:30:03 EDT 2018 +.\" Last Change: Tue Aug 7 12:01:07 EDT 2018 .\" .\" bash_builtins, strip all but Built-Ins section .if \n(zZ=1 .ig zZ .if \n(zY=1 .ig zY -.TH BASH 1 "2018 March 15" "GNU Bash 5.0" +.TH BASH 1 "2018 August 7" "GNU Bash 5.0" .\" .\" There's some problem with having a `@' .\" in a tagged paragraph with the BSD man macros. @@ -739,7 +739,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 @@ -1357,7 +1357,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" ... @@ -1499,7 +1506,8 @@ only when in extended debugging mode (see the description of the option to the .B shopt builtin below). -Setting \fBextdebug\fP after the shell has started to execute a script +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 @@ -1519,7 +1527,8 @@ only when in extended debugging mode option to the .B shopt builtin below). -Setting \fBextdebug\fP after the shell has started to execute a script +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 @@ -2072,7 +2081,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) @@ -2277,6 +2286,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. @@ -2400,6 +2414,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 @@ -2914,6 +2930,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, @@ -2945,16 +2969,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. @@ -4821,7 +4845,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 @@ -7640,12 +7664,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, @@ -7654,12 +7678,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. @@ -7855,7 +7888,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. @@ -7863,12 +7896,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 @@ -9271,7 +9308,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 @@ -9817,7 +9854,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. @@ -10589,7 +10626,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 , diff --git a/doc/bash.html b/doc/bash.html index 54b42fec7..08e1b4a43 100644 --- a/doc/bash.html +++ b/doc/bash.html @@ -3,7 +3,7 @@ -
BASH(1)2018 March 15BASH(1) +BASH(1)2018 August 7BASH(1)

Index @@ -965,7 +965,7 @@ 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 regex(3)). +a POSIX extended regular expression and matched accordingly (as in 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 @@ -1738,7 +1738,14 @@ is null, the parameters are joined without intervening separators.
@
-Expands to the positional parameters, starting from one. When the +Expands to the positional parameters, starting from one. +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, "$@" is equivalent to "$1" "$2" ... @@ -1922,7 +1929,8 @@ option to the shopt builtin below). -Setting extdebug after the shell has started to execute a script +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 @@ -1947,7 +1955,8 @@ option to the shopt builtin below). -Setting extdebug after the shell has started to execute a script +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 @@ -2634,7 +2643,7 @@ Similar to BASH_ENV; -used when the shell is invoked in POSIX mode. +used when the shell is invoked in posix mode.
EXECIGNORE
@@ -2887,6 +2896,12 @@ startup file, overriding the default of below). +
INSIDE_EMACS + +
+If this variable appears in the environment when the shell starts, +bash assumes that it is running inside an Emacs shell buffer +and may disable line editing, depending on the value of TERM.
LANG
@@ -3043,6 +3058,8 @@ running, bash enables posix mode, as if the command set -o posix had been executed. +When the shell enters posix mode, it sets this variable if it was +not already set.
PROMPT_COMMAND
@@ -3698,6 +3715,16 @@ and and the shell assigns the expanded value. +

+ +Bash also performs tilde expansion on words satisfying the conditions of +variable assignments (as described above under +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.  

Parameter Expansion

@@ -3738,16 +3765,16 @@ The parameter is a shell parameter as described above 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. +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 +parameter referenced by parameter instead of performing the complete indirect expansion. The exceptions to this are the expansions of ${!prefix*} and ${!name[@]} described below. @@ -6125,7 +6152,7 @@ cannot affect the shell's execution environment.

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

@@ -9745,12 +9772,12 @@ will be displayed.

The return value is true unless an invalid option is supplied, or no matches were generated. -

complete [-abcdefgjksuv] [-o comp-option] [-DE] [-A action] [-G globpat] [-W wordlist] [-F function] [-C command]
+
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, @@ -9759,12 +9786,21 @@ 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 +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 +The -E option indicates 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 under Programmable Completion. @@ -9995,7 +10031,7 @@ a name for which no specification exists, or an error occurs adding a completion specification. -

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. @@ -10003,12 +10039,16 @@ 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 +The -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 -E option indicates that the remaining options should +The -E option indicates that other supplied options should apply to ``empty'' command completion; that is, completion attempted on a 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 return value is true unless an invalid option is supplied, an attempt is made to modify the options for a name for which no completion @@ -11727,7 +11767,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 posix mode, only shell variables are listed. +In posix 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 @@ -12444,7 +12484,7 @@ interrupt; previous versions continue with the next command in the list. If set, bash, -when in posix mode, treats a single quote in a double-quoted +when in posix mode, treats a single quote in a double-quoted parameter expansion as a special character. The single quotes must match (an even number) and the characters between the single quotes are considered quoted. This is the behavior of posix mode through version 4.1. @@ -13426,7 +13466,7 @@ and -u, which are unscaled values; -and, when in Posix mode, +and, when in posix mode, -c and @@ -13852,7 +13892,7 @@ There may be only one active coprocess at a time.


-
GNU Bash 5.02018 March 15BASH(1) +GNU Bash 5.02018 August 7BASH(1)

@@ -13958,6 +13998,6 @@ There may be only one active coprocess at a time.
This document was created by man2html from bash.1.
-Time: 19 March 2018 09:43:32 EDT +Time: 07 September 2018 16:15:28 EDT diff --git a/doc/bash.info b/doc/bash.info index 9a4edb080..171e1a7f1 100644 --- a/doc/bash.info +++ b/doc/bash.info @@ -2,9 +2,9 @@ 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 5.0, 15 March 2018). +Bash shell (version 5.0, 7 August 2018). - This is Edition 5.0, last updated 15 March 2018, of 'The GNU Bash + This is Edition 5.0, last updated 7 August 2018, of 'The GNU Bash Reference Manual', for 'Bash', Version 5.0. Copyright (C) 1988-2018 Free Software Foundation, Inc. @@ -27,10 +27,10 @@ Bash Features ************* This text is a brief description of the features that are present in the -Bash shell (version 5.0, 15 March 2018). The Bash home page is +Bash shell (version 5.0, 7 August 2018). The Bash home page is . - This is Edition 5.0, last updated 15 March 2018, of 'The GNU Bash + This is Edition 5.0, last updated 7 August 2018, of 'The GNU Bash Reference Manual', for 'Bash', Version 5.0. Bash contains features that appear in other popular shells, and some @@ -768,7 +768,9 @@ 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. The match is performed @@ -883,30 +885,30 @@ 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 @@ -1103,7 +1105,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: @@ -1118,10 +1121,18 @@ 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. @@ -1406,15 +1417,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. @@ -1628,6 +1645,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. +  File: bash.info, Node: Shell Parameter Expansion, Next: Command Substitution, Prev: Tilde Expansion, Up: Shell Expansions @@ -1653,18 +1675,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'. 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. +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. @@ -3662,8 +3683,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. @@ -3846,8 +3867,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. @@ -4826,7 +4847,8 @@ Variables::). 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). Setting 'extdebug' - after the shell has started to execute a script may result in + 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' @@ -4838,7 +4860,8 @@ Variables::). 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). Setting 'extdebug' after the shell has - started to execute a script may result in inconsistent values. + 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 @@ -5228,7 +5251,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. @@ -5237,6 +5260,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_'. @@ -5317,7 +5346,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 @@ -5484,9 +5514,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 @@ -5832,8 +5865,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::). @@ -6453,7 +6486,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::).  File: bash.info, Node: The Restricted Shell, Next: Bash POSIX Mode, Prev: Controlling the Prompt, Up: Bash Features @@ -6511,212 +6545,214 @@ 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. 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 + 45. 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 + 46. 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 + 47. 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 + 48. 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 + 49. 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'. + 50. The default editor used by 'fc' is 'ed'. - 50. The 'type' and 'command' builtins will not report a non-executable + 51. 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 + 52. 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 + 53. 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' + 54. 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 + 55. 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 + 56. 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 + 57. 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 @@ -7374,7 +7410,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 @@ -7650,7 +7686,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 @@ -8141,7 +8177,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)' @@ -8737,26 +8773,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, @@ -8783,7 +8827,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'. @@ -8936,20 +8980,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 @@ -8993,7 +9041,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 ;; @@ -9263,7 +9311,8 @@ previous commands quickly. History expansion is performed immediately after a complete line is read, before the shell breaks it into words, and is performed on each -line individually without taking quoting on previous lines into account. +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 @@ -9274,10 +9323,20 @@ 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. +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 @@ -9760,8 +9819,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. @@ -10881,7 +10940,7 @@ 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) @@ -10966,9 +11025,9 @@ D.2 Index of Shell Reserved Words * !: Pipelines. (line 9) * [[: Conditional Constructs. - (line 122) + (line 124) * ]]: Conditional Constructs. - (line 122) + (line 124) * {: Command Grouping. (line 21) * }: Command Grouping. (line 21) * case: Conditional Constructs. @@ -10990,7 +11049,7 @@ D.2 Index of Shell Reserved Words * in: Conditional Constructs. (line 28) * select: Conditional Constructs. - (line 80) + (line 82) * then: Conditional Constructs. (line 7) * time: Pipelines. (line 9) @@ -11006,24 +11065,24 @@ D.3 Parameter and Variable Index [index] * 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) @@ -11031,21 +11090,21 @@ D.3 Parameter and Variable Index * BASHPID: Bash Variables. (line 25) * BASH_ALIASES: Bash Variables. (line 32) * BASH_ARGC: Bash Variables. (line 41) -* BASH_ARGV: Bash Variables. (line 53) -* BASH_ARGV0: Bash Variables. (line 64) -* BASH_CMDS: Bash Variables. (line 72) -* BASH_COMMAND: Bash Variables. (line 81) -* BASH_COMPAT: Bash Variables. (line 86) -* BASH_ENV: Bash Variables. (line 101) -* BASH_EXECUTION_STRING: Bash Variables. (line 107) -* BASH_LINENO: Bash Variables. (line 110) -* BASH_LOADABLES_PATH: Bash Variables. (line 118) -* BASH_REMATCH: Bash Variables. (line 122) -* BASH_SOURCE: Bash Variables. (line 130) -* BASH_SUBSHELL: Bash Variables. (line 137) -* BASH_VERSINFO: Bash Variables. (line 142) -* BASH_VERSION: Bash Variables. (line 165) -* BASH_XTRACEFD: Bash Variables. (line 168) +* 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. @@ -11054,12 +11113,12 @@ D.3 Parameter and Variable Index (line 50) * CDPATH: Bourne Shell Variables. (line 9) -* CHILD_MAX: Bash Variables. (line 179) +* 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 186) +* COLUMNS: Bash Variables. (line 188) * comment-begin: Readline Init File Syntax. (line 68) * completion-display-width: Readline Init File Syntax. @@ -11072,90 +11131,91 @@ D.3 Parameter and Variable Index (line 91) * completion-query-items: Readline Init File Syntax. (line 98) -* COMPREPLY: Bash Variables. (line 238) -* COMP_CWORD: Bash Variables. (line 192) -* COMP_KEY: Bash Variables. (line 221) -* COMP_LINE: Bash Variables. (line 198) -* COMP_POINT: Bash Variables. (line 203) -* COMP_TYPE: Bash Variables. (line 211) -* COMP_WORDBREAKS: Bash Variables. (line 225) -* COMP_WORDS: Bash Variables. (line 231) +* 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 244) -* DIRSTACK: Bash Variables. (line 248) +* 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 258) +* 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 263) -* EPOCHREALTIME: Bash Variables. (line 267) -* EPOCHSECONDS: Bash Variables. (line 275) -* EUID: Bash Variables. (line 282) -* EXECIGNORE: Bash Variables. (line 286) +* 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 299) -* FIGNORE: Bash Variables. (line 303) -* FUNCNAME: Bash Variables. (line 309) -* FUNCNEST: Bash Variables. (line 326) -* GLOBIGNORE: Bash Variables. (line 331) -* GROUPS: Bash Variables. (line 338) -* histchars: Bash Variables. (line 344) -* HISTCMD: Bash Variables. (line 359) -* HISTCONTROL: Bash Variables. (line 364) -* HISTFILE: Bash Variables. (line 380) -* HISTFILESIZE: Bash Variables. (line 384) -* HISTIGNORE: Bash Variables. (line 395) +* 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 415) -* HISTTIMEFORMAT: Bash Variables. (line 422) +* 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 430) -* HOSTNAME: Bash Variables. (line 441) -* HOSTTYPE: Bash Variables. (line 444) +* 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 447) +* IGNOREEOF: Bash Variables. (line 449) * input-meta: Readline Init File Syntax. (line 187) -* INPUTRC: Bash Variables. (line 457) +* 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 461) -* LC_ALL: Bash Variables. (line 465) -* LC_COLLATE: Bash Variables. (line 469) -* LC_CTYPE: Bash Variables. (line 476) +* 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 481) -* LC_NUMERIC: Bash Variables. (line 485) -* LC_TIME: Bash Variables. (line 489) -* LINENO: Bash Variables. (line 493) -* LINES: Bash Variables. (line 497) -* MACHTYPE: Bash Variables. (line 503) +* 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 507) +* MAILCHECK: Bash Variables. (line 515) * MAILPATH: Bourne Shell Variables. (line 27) -* MAPFILE: Bash Variables. (line 515) +* MAPFILE: Bash Variables. (line 523) * mark-modified-lines: Readline Init File Syntax. (line 232) * mark-symlinked-directories: Readline Init File Syntax. @@ -11166,42 +11226,42 @@ D.3 Parameter and Variable Index (line 249) * meta-flag: Readline Init File Syntax. (line 187) -* OLDPWD: Bash Variables. (line 519) +* OLDPWD: Bash Variables. (line 527) * OPTARG: Bourne Shell Variables. (line 34) -* OPTERR: Bash Variables. (line 522) +* OPTERR: Bash Variables. (line 530) * OPTIND: Bourne Shell Variables. (line 38) -* OSTYPE: Bash Variables. (line 526) +* 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 529) -* POSIXLY_CORRECT: Bash Variables. (line 534) -* PPID: Bash Variables. (line 543) -* PROMPT_COMMAND: Bash Variables. (line 547) -* PROMPT_DIRTRIM: Bash Variables. (line 551) -* PS0: Bash Variables. (line 557) +* 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 562) -* PS4: Bash Variables. (line 567) -* PWD: Bash Variables. (line 575) -* RANDOM: Bash Variables. (line 578) -* READLINE_LINE: Bash Variables. (line 583) -* READLINE_POINT: Bash Variables. (line 587) -* REPLY: Bash Variables. (line 591) +* 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 594) -* SHELL: Bash Variables. (line 600) -* SHELLOPTS: Bash Variables. (line 605) -* SHLVL: Bash Variables. (line 614) +* 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. @@ -11212,10 +11272,10 @@ D.3 Parameter and Variable Index (line 297) * TEXTDOMAIN: Locale Translation. (line 11) * TEXTDOMAINDIR: Locale Translation. (line 11) -* TIMEFORMAT: Bash Variables. (line 619) -* TMOUT: Bash Variables. (line 657) -* TMPDIR: Bash Variables. (line 669) -* UID: Bash Variables. (line 673) +* 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. @@ -11512,7 +11572,7 @@ D.5 Concept Index * 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) @@ -11523,7 +11583,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) @@ -11606,112 +11666,112 @@ Node: Lists23781 Node: Compound Commands25520 Node: Looping Constructs26532 Node: Conditional Constructs29027 -Node: Command Grouping40082 -Node: Coprocesses41561 -Node: GNU Parallel43464 -Node: Shell Functions47438 -Node: Shell Parameters54521 -Node: Positional Parameters58934 -Node: Special Parameters59834 -Node: Shell Expansions63171 -Node: Brace Expansion65294 -Node: Tilde Expansion68018 -Node: Shell Parameter Expansion70366 -Node: Command Substitution84849 -Node: Arithmetic Expansion86204 -Node: Process Substitution87136 -Node: Word Splitting88256 -Node: Filename Expansion90200 -Node: Pattern Matching92730 -Node: Quote Removal96716 -Node: Redirections97011 -Node: Executing Commands106569 -Node: Simple Command Expansion107239 -Node: Command Search and Execution109169 -Node: Command Execution Environment111545 -Node: Environment114529 -Node: Exit Status116188 -Node: Signals117858 -Node: Shell Scripts119825 -Node: Shell Builtin Commands122340 -Node: Bourne Shell Builtins124378 -Node: Bash Builtins145036 -Node: Modifying Shell Behavior173944 -Node: The Set Builtin174289 -Node: The Shopt Builtin184702 -Node: Special Builtins201572 -Node: Shell Variables202551 -Node: Bourne Shell Variables202988 -Node: Bash Variables205092 -Node: Bash Features235106 -Node: Invoking Bash236005 -Node: Bash Startup Files241991 -Node: Interactive Shells247094 -Node: What is an Interactive Shell?247504 -Node: Is this Shell Interactive?248153 -Node: Interactive Shell Behavior248968 -Node: Bash Conditional Expressions252456 -Node: Shell Arithmetic256822 -Node: Aliases259639 -Node: Arrays262187 -Node: The Directory Stack267553 -Node: Directory Stack Builtins268337 -Node: Controlling the Prompt271305 -Node: The Restricted Shell274067 -Node: Bash POSIX Mode275892 -Node: Job Control286243 -Node: Job Control Basics286703 -Node: Job Control Builtins291671 -Node: Job Control Variables296398 -Node: Command Line Editing297554 -Node: Introduction and Notation299225 -Node: Readline Interaction300848 -Node: Readline Bare Essentials302039 -Node: Readline Movement Commands303822 -Node: Readline Killing Commands304782 -Node: Readline Arguments306700 -Node: Searching307744 -Node: Readline Init File309930 -Node: Readline Init File Syntax311077 -Node: Conditional Init Constructs331448 -Node: Sample Init File335644 -Node: Bindable Readline Commands338761 -Node: Commands For Moving339965 -Node: Commands For History341814 -Node: Commands For Text346109 -Node: Commands For Killing349498 -Node: Numeric Arguments351979 -Node: Commands For Completion353118 -Node: Keyboard Macros357309 -Node: Miscellaneous Commands357996 -Node: Readline vi Mode363949 -Node: Programmable Completion364856 -Node: Programmable Completion Builtins372450 -Node: A Programmable Completion Example382336 -Node: Using History Interactively387587 -Node: Bash History Facilities388271 -Node: Bash History Builtins391276 -Node: History Interaction395807 -Node: Event Designators398874 -Node: Word Designators400093 -Node: Modifiers401730 -Node: Installing Bash403132 -Node: Basic Installation404269 -Node: Compilers and Options407527 -Node: Compiling For Multiple Architectures408268 -Node: Installation Names409961 -Node: Specifying the System Type410779 -Node: Sharing Defaults411495 -Node: Operation Controls412168 -Node: Optional Features413126 -Node: Reporting Bugs423652 -Node: Major Differences From The Bourne Shell424846 -Node: GNU Free Documentation License441698 -Node: Indexes466875 -Node: Builtin Index467329 -Node: Reserved Word Index474156 -Node: Variable Index476604 -Node: Function Index492282 -Node: Concept Index505585 +Node: Command Grouping40110 +Node: Coprocesses41589 +Node: GNU Parallel43492 +Node: Shell Functions47550 +Node: Shell Parameters54633 +Node: Positional Parameters59046 +Node: Special Parameters59946 +Node: Shell Expansions63660 +Node: Brace Expansion65783 +Node: Tilde Expansion68507 +Node: Shell Parameter Expansion71124 +Node: Command Substitution85580 +Node: Arithmetic Expansion86935 +Node: Process Substitution87867 +Node: Word Splitting88987 +Node: Filename Expansion90931 +Node: Pattern Matching93461 +Node: Quote Removal97447 +Node: Redirections97742 +Node: Executing Commands107300 +Node: Simple Command Expansion107970 +Node: Command Search and Execution109900 +Node: Command Execution Environment112276 +Node: Environment115260 +Node: Exit Status116919 +Node: Signals118589 +Node: Shell Scripts120556 +Node: Shell Builtin Commands123071 +Node: Bourne Shell Builtins125109 +Node: Bash Builtins145767 +Node: Modifying Shell Behavior174675 +Node: The Set Builtin175020 +Node: The Shopt Builtin185433 +Node: Special Builtins202303 +Node: Shell Variables203282 +Node: Bourne Shell Variables203719 +Node: Bash Variables205823 +Node: Bash Features236283 +Node: Invoking Bash237182 +Node: Bash Startup Files243195 +Node: Interactive Shells248298 +Node: What is an Interactive Shell?248708 +Node: Is this Shell Interactive?249357 +Node: Interactive Shell Behavior250172 +Node: Bash Conditional Expressions253659 +Node: Shell Arithmetic258025 +Node: Aliases260842 +Node: Arrays263390 +Node: The Directory Stack268756 +Node: Directory Stack Builtins269540 +Node: Controlling the Prompt272508 +Node: The Restricted Shell275274 +Node: Bash POSIX Mode277099 +Node: Job Control287514 +Node: Job Control Basics287974 +Node: Job Control Builtins292942 +Node: Job Control Variables297669 +Node: Command Line Editing298825 +Node: Introduction and Notation300496 +Node: Readline Interaction302119 +Node: Readline Bare Essentials303310 +Node: Readline Movement Commands305093 +Node: Readline Killing Commands306053 +Node: Readline Arguments307971 +Node: Searching309015 +Node: Readline Init File311201 +Node: Readline Init File Syntax312348 +Node: Conditional Init Constructs332748 +Node: Sample Init File336944 +Node: Bindable Readline Commands340061 +Node: Commands For Moving341265 +Node: Commands For History343114 +Node: Commands For Text347409 +Node: Commands For Killing350797 +Node: Numeric Arguments353278 +Node: Commands For Completion354417 +Node: Keyboard Macros358608 +Node: Miscellaneous Commands359295 +Node: Readline vi Mode365248 +Node: Programmable Completion366155 +Node: Programmable Completion Builtins373749 +Node: A Programmable Completion Example384442 +Node: Using History Interactively389682 +Node: Bash History Facilities390366 +Node: Bash History Builtins393371 +Node: History Interaction397902 +Node: Event Designators401522 +Node: Word Designators402741 +Node: Modifiers404378 +Node: Installing Bash405780 +Node: Basic Installation406917 +Node: Compilers and Options410175 +Node: Compiling For Multiple Architectures410916 +Node: Installation Names412609 +Node: Specifying the System Type413427 +Node: Sharing Defaults414143 +Node: Operation Controls414816 +Node: Optional Features415774 +Node: Reporting Bugs426292 +Node: Major Differences From The Bourne Shell427486 +Node: GNU Free Documentation License444338 +Node: Indexes469515 +Node: Builtin Index469969 +Node: Reserved Word Index476796 +Node: Variable Index479244 +Node: Function Index494995 +Node: Concept Index508298  End Tag Table diff --git a/doc/bash.pdf b/doc/bash.pdf index de5d312976ec46fe6127022990df5c2543930480..b38b46d1cf3adf95cc162d236a78efd1ef6f327b 100644 GIT binary patch delta 300227 zc-jCFK<>Z!XUZq!-7MX3?<1%gPm%@hs4Se*P7{`?!Nn?wkc z9u8oC+iu)Ql6}`#@L_;vEhL&`GMVI~x<}~tqQ~81RqqZUEf!Q2WpSs9tR`8OH4pm* z{VV>*J&|{kRkC)l3j?++CNm==PnF6u-;%~K~L6?7wY9C5NRNPvMgBdFT(GySL^@6EEt!th_kZ5i1il# z5mAC6&llnCPxoPRzY2b=+q$oIG(IVdC}nD7EC>D2?e|r?9fH49?NJS~2BZl_b2a+x zf@T?d`tD;AYm=|CSVTMzu2?Qdef_%YJ~gcxW%h+HwqAW7~U{|+eFm|)mQxSMUdN)a-&eG0bWRXbXRIlFGc4I{(^e?OJu4(J(S}FXI zl%?5r^UzoQ3w9p#b+rvP>KFrhZwQ`$pXyecF+A0~UC<0c(~iKvW;8xd)B&eilo?Nc zu00p0o{JX_Vr3GE+&Sn@dg#!v5)qYUQik0hyL$B>>wi7zDmXV05_{Tbaszb(dwXT{ z%P`jatLJ8mpU0{nkB5LJR92)WCWW~cQ7H#qO#!GDHAdg#W~Y|=nuO- zs3aWIh?70=2He6#VrG2lRw+-Sya*phIa91+0^ybEL9~@ZZUtr^>VD|j3hr(Jm1@`g zqZ*s8CDVtQ?N_M~QBhi#+=c)BE_$ejr~jlKaLme2I*}I?HwEtNYrICn5VUADQ_e@b( zfdTjT5)(Xul7Ky0#%(%9Dcex#5nx@coB>lW`)7BK+lt>s1NF z#f*jP_rH9YAr5b5MQLN=q25tcDE~j-ucEp8!3lYkiE>U3;D&5yael(?GRkadG>>ngThJy; zlXAkhx!U%EbJq?dSyV7#-g;^zO0F2v2un*#s^q!5usg`j!2A zSzv!#wY#ERT3G&CG{?ZfL%o%gRVo1yeHT zscJtdL_E|_(o{k0ZNVpsR1W;yATe~0v!xlM2r19g3ZPS_HW`6EdbQZr@Ku_rQ|JIl zg}`m|xJq@ldIU;?$G+Rkmwx@__Wj=|^|jlo-;%nK2bF-^7&d0}C}YazeKl^L)Zv|NJJT3QJ-JaPDNv`TN0E`F3XK{*%NLlgr#E|BQkvyC3<}G>xa>IC9_1-Vl_BFP3i z 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¬anbcYgb*f$ySfe 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%0AfOJ2lYyui6x_s4 z@oxKf0FB?ZOeYB|2O za0~*91;Bvd0*^$2CMPJailM-O_(bJYEoijE;r%zlfPV-I1H@vo3h0r5`*)if|MH97g~O0j~Ba1UMDZF#Jw&3W)Dx z9A^dl7=}WEQxS#y%T2)lDgiN%Q$YLzf@4ciG^nVcP~hH(LSeuMLH(1@0sjVs;hPml zGC;iy2Z#pGg(%SdFir^?KR$4H7q7tnJnx-ebAe@`SrIp9;`1*YAOe5D#T7l+ zA6$a{mkjt{AvhH=Ab*|$f?R^jVsIRxArL57_CFg0{-p$le{paMh;M$JJE6!wC;>lK z;W7fmAuyn~kyAVX6xFztg`&ZL;8aAzz^RBq;g3wGc=!YahCc0|cy~jmfPXL{44jG> zH2yW*DIk7Ez)tTNLCpybN8sNLoeDvhO*o2+e+_pEh|hd*#Ssmz^Jq{Ip2|?50LDTg z01ONWs`D5Gm>a;*f4HnhBN3ng#=`KQt8jSe|F{_VTZsO{H5?lJP==GiLCpjUdKbXq zVe$DS42!Fd`26n_5Cir*8uXfh<5!>}g#*ODl)?oJ2J#0y@S`0XjRo;P+?a>@10Yxl z773om(HQV6AR2=K`yKn=_yGO}M1f9x`Wg;4KNbN_Pb|0}oL;tq@$mU1aQaXVemKH0 z8Yox>p70>xl*Qq}!7sQF@VgO?2O#m^25~~rWz*?V@T~wxg9s&#>4A7Z9El^N;HPic z-}AWPe}#XzO2eW+*CB8S0_2jvZg%khjR7~8KoUNdlU^poCLENLUNx4H!-X48vw|F4 z7Ds4t^+gU2SAasLVGvn48H}8y`2Xh$BMM1L3Kv%sXIBqr3rh-Ibl{d#aC6J6DNy`B DS-DLv delta 298201 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 z zg*Y9YF%>Fszz&3pLl;uP^3x05#YDnPcZ9djkuIMJ^Z_;ClQyK!vI7!KQS*^NA+E4L zP8R)7$+04-EWoA%D4Ddo{oEe5w@F=phWnw@mLF&d0G5)aT4L1<`4O7fbd2mzNp3>( zyX|o|Oz)C!6N}R(_q)aW%#!KnPYsZ&J|ohg9Fv~$X<74gHa+Nv!>JFfpRVve-e=cH zu)^eJS%l|yiGtx#p`2AP*TwsyEc2KFxvb;*?a-_;Ap<<4RPlw+tDNM5GKg7!5yG9k z%p*LUU{#3;p#0JguIE>wzKnfrOwRmJP-I2)Aa4R;=6Hpj$wZPq7Pv~c+Sec;;X{t9|O7&7QEkpn*H)Vm{_xupEvW`SQIWEE56J!+p1+2j9e0*6IISNwDbP#o&*n?oZi!@-x zvFdrxI`(BrQS4ecHI~JHmbvFyNg(BX49|tnOqv8~X?rqY!k6gf+A7X4-YAy;yb!=` zLq!`8I})O-2@f}AJH%^)E17V|-e!;p#IN^V3c8l9|3do`6P&~E${jPsR znF{;e?MFx@7hq!F6+m1m^QG}ann-*S*V@JvgtxsQw85xQxF-NPK*qlY&az)MYiP6#m5ElY^Alh`%Bl%c1htmAW->+7tbgO^L5AVN*q{gw*QuPxS+oXhzz9H+}pLB3T1M-;Xf0tZAF^c5w`oQ~j za%&hb&VjqkxEg}ZeRtuArxl|l^R#KP8EC;{-a-z!-I-ch$6Fv=-hy~cv+$VD_UT6R z)bGmO*Gy;!)&uUlQnj7v(^Zi$B7x7_rz;)kI;z5;)7r@OyYZw&_coyiR3EuUOiW=$ zpL-SSW1rVjjaPA}f9ZdC@l=w^l`SmuaI9BYSnl^5e^Qr{V5?V{W>50wGwNZ0g`c8? zoE-GlB^*;g#FTf?H`u&-?uORaQKWVCL_^=An4gMpsn6XOX8epoNl-5e%8RA;L}Rn4 zp$-MF6jmI0!Q0(u3)E1MqsTnB!0BryZ1m=8dLkcBwF=Tzf976nC--IT=3pySrazeY zf3lTCF+)+U;s!u5=X!lAnA^=kZ^FRc=NfR{m%rqa8Xx#2xNzi0A$2L^**=H_lq^-# zlaE5`pus?(JC1aWhUnzM#w-odo@7mE2nCC;b%3+!o?sV=C?|db`S1zEZ>Z|r;HMoQT)gLUEZGk`Mu0OPiHjyeD>2B z(?4eR&+<0==IU%g2`{s&C9JIRm#a@_=3|!0B9lU7SGQ;RH!seAul@zQz&gfB$yE(2 zu2%3Lk}z0uILkl$_s5)lJkS2x_U+hga6MBsDY#il^`e)e%n{`ozlR^)}Cl9W}p;FVsr?|0qCt|{!Aq97%sh23YkR`czP-?NiXV=@lzv(}o0X|sUJh_zvU*OQN97=MrGMGzVc z(@fcB=s#zT-LIK;nG>_?Po1$Sctu!H&QbGnQdFXLDk!Md!F4{iyZzWtS<}PSnINhz zMSj=qvT4`s_ER=|%6@Lgft>$v^|v!tFj84H9y0-AxOBfqFsuU#C38Y}{dZH=ty);U zY&O|$z+0vpgJ4vaj~KWlqJJ)n`NkK$OjHkro|!@4 zASkV%U_f3+N(*+zWKjDs7Fqd$CAlCXq>TVI$O7|pHw(+x`NeP!VKyIs)>7$1VMS3X zU^t9GjfU3nCcj-m|85{GtseFn=?$APm>Sz?ldAGZ;tO zui!NM>oBfJrj-EODp?ij=O~N5dG;X2l#)tV!2ONZ;RQyd&Uk}U=ehw+wk@Q&cD(KS29G#&yY&&>aw-U;PMSZ>J(MvbC|Axy zODXK7``tKfvVUO<6m2(*T0f9hgoZ0dKJMUpaR@#K?yh`1Kxvw6r+?;*P@l_&h0~(; zVxc3sPcHePiM$Wwi>T23Ha@G2ox9sY7=g%f0}i}Kn6t_6CB z@Ljc^&K1ORTJXHtZ+2P@fXoNPK!6NPy1ib$`|kaDVLr^?y?mGfXfO#mbt|B|v{t_w zoeRORUSlCzRwhE-?tvEI6>nO9lb2^4f8B0;9G-6_S(N_skNMQLS#vXIdK`;XudXkr z!q3O^ud@McHXgdEy~sLEuDc$hJtR^~R?(!tjHbfz(X^11)G`FqAyzc=7lp8Ix!AaJ zOly8MV3ifv7DUSbv9^IU$%Qi#Q$W3=#1mol+GIlmM@tZ#dqT<^$L2o!0<JRy>9@1RO}o*GfDoaopaUkE2Gil=`Qsr0C{XE%@bg^~ ziWo*c9qgPE!HkBb3zgsPoca@eDquOacn&G_c}hE9sq6RXiZ&9q$gBHRgZAFvHH=MHZLid$IHSyarC?|DkRDMl=Aek-v zA#W*9nIK=dH!z^!e_ASHwTv46 z{D;_vNrayG)eab2rXZCS>6&TF7yu)s5S6b{o!DAm80BW15?CFC^xhEEiVBm~!3NS( z)G^40rIZL83tNtKqa`=lv~8ERC;(C|Smo3QiA35`>K9)#dGc?9qGOZFb$z(^m-nw< zUA}+)^6K*4+qpup(hSu7C}>oK(kMj50N@(5RD|NlEV<6-)&$r=7>A4uxY%?*n>5vg zQttEqwv*RsGbVT2rk`*RlD)$Oi?@>yGpY3MX;lw!Mc){v)+Q-LXyPcU!hd;2lQ3#b z0m_qoY9Itw2jn4>p=vIF-<(3IQDXk%cbBic3q}M;NXRn2d3-a+PVI*2klxArt!VNt)pU$bCZ-lbp7&( z^_*)ph5}Caz3YQyzBm1_sZl_@tUR-NqF;n{mt$`zPvUcKx}*tzG?esQ`S!pez$fWM zOqpxxPWxqO37|iO>4McQx{g^L^)~0tfydgQj{f@j6r@_|a`RDE0AaPR=QY`kK0|=0 z;=aWP?Wcd)_d2>}ui9Vw&XnIK(J7g9LZklS6t`S!2Yt|{GBvo~`jgwb(^ejC{sn>D z@BxHCv)KRwHr@Y|&1)Y9Cni&9mD`i@Ye@kOlRRu37>~K1p85g-e`gW&w5I-j6oa64 z8Or8Awv%vd8h@vhbB)?bn`Pj=HH*6q|8La;I)M-o(M@4#ukM(w!2h)`c(?V%@vKdT zQ$CR>3|y8LX|#wZVdN?}0!F*SH|+I?=npzv>aM<7QJ5Y+-l_yEd6xyQm(CG@jrghD z+|W@AQB>|w-6$Kj#_e>+0|Qrnd30VTaX1?KcSm;zB7YB5Mid@xC&m+SOl5D|I{Jzi zMf%!JN#72_0np|(>|{JY2&{Q7jZSpO6v-|rlGYfKz~D+p7k0`G2ITDwwZPeB{8H6HZ&B=Nb5h0g(Jv zcHF5IuvJK!kB5vJLWb`pp7dxzS>n-HPgsveD(&pVREc&v=GwMtzc5T1-$m6Sm>?QV zVGsp}o3UBikH_|>J(S3PM(iU%!Aa>~Og)*GYA*c@@4>T*sNeL|$n&sn`}x-;W(@g+ z&wu4(B0gkQSt%#}(ac0uDm?+wZ2V#OyV3=P>3(;8 z%BVCub>4*B?Jm0=R*7h$B3|%|z8wZqvu)VMe64= zG{d+(tG~~pei@vl!~=Qaw$G8ySEcKA7eG#TzOZKUUAm*4FFgkE;6e1p6v(!_3mo$B z03`e3K~tuc_QGvD;tberk*3qcpK74vPt_(+!`tSSc>>}(0)7`LT7}Par=AWm9Do0q zp5ks+hkEH&uI}@fEd^jOYU&ntoPZCQAUSNXcm>zF?|02z){f&aX2Wv1A7N)4e?w`% z8hXfs{s{L*A)64l8obR0m)X~Z96W|rrOUq3o_7c7Xd)T9;_TuJxBlrTK#&G2`}!!1 zplqH{$-ATG0Rb|311kwhMcA>l(pWwAXeqTgR$|Y4>*IR!jGJBPj|KbIl1{^E9o>q^g; z@7}z5{q~bva5R5gH%H?g*4^^hlN_98R1O0VPS;~%msw_6lJkI&9}!;IO;79y+%&Lx zO?{5P6D{@QKWEWtJ#0@l5rMN-)#FV>u(h36=sqIGxgOi3M~4+PCo+1c{rcN)vv0KX zE5gET{QJvqb%-tr^L#kJx_p}YV>?!-;0ynVhQ@9s(=%l(mHQZ5U zgJHD^(ttlfX5?FfLE`jr%s%kEMnckA#*jf=9NsdF<{|HeN9CK z%J2?)h)Sgrf^Fp|WwmW>TTeXJs;?k}DmOU$qkSDJ_cBB%+h=IMcK7TwMsDuiyPvw` zrFr*b*{o*8QD^KpFgQ*wlm`Ys0t+B+q1_xNNsC(G)6_~4{Xbh!Bi&!$exH5QOzRAM z?tB3Wtx$PES)ILUMu?WI)Ut`nJ@Ayc)$6OXzr#QO0RpA^Nt0Z19RV?udU8pBb?sM- zRjD$VBFC5++{TqkA~_ptQ?X=AR5>Ya9C5TUryKf!VoXph|1*D9yPGfHY=aO-L7m_J^Hq64*DTy044Brs-M1ip}oeuNr*O`NUtzYrTL2_fj2U= zV3~U3`*-Hygca(%3^S70^Ik9gMJZ;5`{C}@H}V%ao0_;Jn8h*UXaRqJqYgf_L)|>; zr)=<8it{u#KI0_MmEU!b4!u~Rp+%k8wbpv&cSgaDnA=x!^U6nohS0P)$@t{h_t8e6 zelM!J+@hT*8?XkoYgCDDDC-7Qo3bmbL3BN8J9L~uh~k(gQQJWVz?4D0z7g9kp8ae2 zw;P(~IHrZaq)>(!H&Io8Ht0bp(^yZWgJW9oA~8R}p`GYO_fh`N5)7Difg(ks0|jOsXJB-Z zvQ+!O?%EyrBR%Ux)jl@$&+t&$t57T`2RJ3pLFHV3s5Wy1@I7aLY{qb$asCU&zL(bS z!Rws>w~?5UGXO<%W-PQoImP!9n21>m&MUeH2k;G_bLmaE*><;~4 zfl5%P zySK|3M45BQ=Ib}=VW2y}s!R|hk%7B9y8pcOX~}TR6Nis~d^gJz07MZzfAtokKfyu* zg+f!CqzAEWO*ptm`0;)=KLf-?5>s3h`6%MRQ!Y+a#vo@dER(Bqh6#%;ejGu_TPW5b z%%G<@q|O6>=*8ymdgv_MPY!qbU<#~XxYs@p4h*;(Ghldk^v)kmab7s9G`^65(HSnt z3!Hf;u5y77%qbI4$V1LO5k$+40K7=d44Y193nX@S0s__4{jUG&OiD5V{tD}m^IRbnoMTvZ z5bNCYChT^EC&V`*tuWeVVPgJJRzLOIvfn_(O!8a+N5zg{?(avpdY@E6ZK~f#_p^FN zd5!_SQ9r0KXiMNU>gen=v=k@A8tOx<`%scIcmDZEr`ok@EFXec z=!58ga6kBNND}~@1)|KoA}`<`snF2J8HL;81iHfZAWUOHjV2&M^tCPrngO2%-?icK zaxi)z1H?OFv~IVCGGrk*tq9Do6L|!D9P44D?o%<%fE6-I{DVy2R*C%}xf5*rL!+Mr zeHEw1Rp2o5r^Wjx(BB9xSJS5WxwDWRDZ7sSlL1aKX+lUbi%_HbdA+yGwl!>dgUvIRvRrWh6#+24U zC6a#&?W_SJIg~2a_mRviJUBP~@kFr#|Kg;eBYtBLae6AwR%;JZXvLO?q{BLdQiaKX zXw}XBFrZ%Awv!>$xS}~uNnyhT2wrQ<*ew9&lb4`t2HN{Sleu)PZLYp*yJi*_SGs02F9ZM5q=-}RpP5e^pt7UPdZ2S4 z+y&)c7X!nHMox>XxtG4Czov2}V2MVFwp1T}S+?OHM#G4knj@>-^`uZs^i0}0h|ie0 z>-GS*C$wu~8e%UR0;@is8pko0el-m}l(d(&|1$%DJv{v_43xn%kP_Qmo=w&PFuQpf ze*IQWUNA<+^eTC^p?a2oK{4X_j9oNlURh}!rKu>J-T@dVeo(~05)(uxwevs}0!TGt zKTc|hX#f-;V`Cm{*%;BZI&ON9cimKFMnSTv_B3j(ixd<>%(Lij?YK6mT_rMdaEH5@ zix>fJtNB<1XM&Y`(XHEV2ZkP+t>{5PHq)|8W$!xAZl>zUWILdLrL(er+R!D7sIdwz zRNa5#R~%1@%tyjD=)g7xgF(X1+g6O=X(aoJ^pzy`iyO%mHk8frWPEpZ?{=-=TC2z@ElS=xNu6G1 z>ANzJjdoG5w^})W_-VQMyP!^pOoRR5><>m$z>w%fXa^C}3`?Rr@Jw+Rss{c_Yh| zcv&#uKRImpJp2%pJ_`m^(ECKQsoW1c8trzcT`Bg{_62JEY`Q9N34j^Ld^G?@vL7%U zNlBJ;S^Uf^tOAB7=)P{mcT=1}lwNqH+6B-cpiLa7;brK5a6yTS9XP1g;yk8IuEh-* zzp=(=slCol zI^$-Z#k!dr3EzqRwygBTtHSkf-7RH)m^mS8k{wzL8tf>rIQc1MLxd@RYAI*ZuGB%Sk)6y|Ubj zZh&foI@szDW5EfF(Gd?9j!@CwLx`@vt(OW^uEgR0Zf9SdwWhJr87*%w9=g6@lB_$l z7Gg?si@h7aLPI)YbV5V3wg{XQwNsF<4|7Ts88u3vY)DhN}lW zyKq3*WUe0Yrwa!_&Gu^Q-j&@?S5KJm+*m+1%@lmlmfWi2eWZ4q_2Xt(Jk;UR^tfqz zp>{!kdgD;*eMDOgCo3XL2hISsLc4T7@#^3{l7oQyGA6$h=(AV#BTOEr3_-ILCu!jJ z({wBz`Tg?cWc675KW=Y?+m=0*K$`W=MB#h@nR9(K+or6PGX69AM$ro(G>?4o{4zoB}1ANzctu@ zgy%5v`0wJ$7u7gc+kzWZm;qsGK=!sT6OnywyJ>*XPgK5<3xN!TaY;7DSR} z;%9^RYDg3ApGzpo3t|zZ-C?UfhUor(wXol5K*iO1P*{POD?9l8u|b=1rN+kxp%>m# z7usEZmKaJ=|F$4{z5*Q;n^k!csBZJms#LeL-#xXso~+Qri%&j>k|LMi0IrTI&!&1F z#{u7aL4QfdKZC+h`+=%F^g{1gwV{Bs2RW&f4G0GH$*HPf$}s0GXbvO+vOOs<0$u#g zt9R&y6xoo1*@7eqkPL8}_f{ zKc=dyZ{*C#Mz9ZFOU>@;x_tFjRr{B$U_2}EKlkVA@#6O%s_cHeD6;#DUoN=)W#;}^ zJ!U`NTr3MFb#}9Yl?H!vb9X@>^Q;nCrBr`*^LUZ}cy)R657-6Pamlo-4Xn6X!(S@K zVad}){_#(rbN=}<`(wLphh~H8d2N`Gw6d^^e(E0|o9%kc-Za|-EeZk%4y!e-K6{`) z#(t@ais>?2%F>>|R9)Ir_I?~gRtv1FuWw#|_&8Ol00F_fyoC9c)2N6VHC%A7kzF%f za?J{^>%4hv_w8UW8uwG0X(PPljS}|CaGhqG!Nt1$SGa4l2YrDa$LtFp2kw7cn!=qS znRFjDn?pOY?AjVf8u+>5^Nm-q?QNSiGpQk5DpR@D`4%L#d%zZQ>IVX@7oC35Y@_l( zC{cP3IXvFB!(}=g`dwct@N9N`n;4ysX&3!`9skuo|h$^9-#Z6fT0mCH_%W8j*W;w~7Jv8Hy z7)xmsL`w*F*aTd77H^7aVS*pa(vYtM8vLsr`m7(aM~IBs&Xr(=*YBsi*#p?zUV=vJ zT2%RA-;UPjG;CMTaLz#9IAs|OVpIDFp$##WluVU%9mT7ycz8tC3=n7|A|Y7eFe2Q6 z6CWXPVbRu!x^7n+gp7X*ekeuW5-ftoXJR5!1!-;%iSC0pZ1&wYTTx=mKIdaQKia^y zWhGubIvxpG4V>QuTlt`ZkhS_LA*AXMQe9LWE^v+(1gNc%{4Xrbe}WYH`sbgsA1}d7 zrmT4Wm+PM|A-5I0mif)~+w7-zZ{A$J{lAYvFuMyECDXO{w$Fc;jD)K6EQ0~!L&7dq z0{vIJD5YYx&tvG{lz>AlL1>LFWSP6H+gn$@ZQE@$ZbP`tOK_6X?SdkxfXghqA=5*G ztGI~=DZ2aiu-POz5jO z{gTum{4Oq1>8^hZxG8~aRWR`CNk)EbzG4OeFA^zW#np?`HefKv+<;^ZNqKgKGz$lz|6963gy8=Q7*|wG>PR2hP8=iKmE| zc_65WCw?L036;8dR57ebqK}Nr!M38P+zD5k&D^q(D+|ff`;4;-8K!kuaqwIM8IGxA z{7Xske-D49LAP1AS!?NHq3Zm32fVoJ;SwRIJI4c_%HjHf?r5%Q7mNxA9FXVyZQH;= z##>4FhB=fMhKZP&$4{%bq!jIfG@gw}e(rcjJk9|l@WD_K^9{U^{ka+4bBiMY- zQ?3x|kE3V?u`8oPG{64a`^!p!a-fR1di(ME-P?b8ijoljB?vLkQIq5(0M3X+U@T|k ztD<6Mp@aW%TJb4Q{6|KOVg~5;qdPtzT?O#$#m&3zzPV#5D1zbAqPm(FOo%N@`I(O1FpC8u`5OBLqx8J)o zk3#R-0l^%KT1vMC)KOKSS)B38x#APZYPElnC}7p@FmfR)%x_$CR#m>qk^kn0|NYI( zPij_Fo>%9M^Aot32t5=yn%L|!)Y;v3Qb?7RCC+-nil>DXm^f4zCo3tX!h%UDrNCL^ zuO_urNiw}qOTAAiU6c)rfCo&69t~?fcOM6?U^+x)r+>JqA|(VnvFys`4ot^ZXTX1p zD-o6E)`yfmW|-BR&DdwnZr3)04JNA(4%uJ&2*FPYm+lYr9rcT5iYuXH3IG7yu$d(u zsB*lc=ZpEbctr7Xu`%iS)PZfjyjQ;ex@#S?oA_95Vzc1I4cg~jKg_=eJT0dJAh?*M zr9+ho9Hfho5c45IjbT2CH)|xSKs3;uCrr(SyJdL+uGpJSVoeQGi<8ojb#9 zCksz8+X50D*?vNC$Ba^Cg8yaBWM~US6Ke2p1g}|hsm4h1FeTg(eshafF2fkXIIm*v zI__!}Wdt;+Jt-#ov3rL4d)<1y&Vv)!ZRlZ4x`rCI3q4tu@rU1xD?ZZD)Rf?&;!!!yLMy_kilp_V{4(Z_rCd`Px z44VrKP`iEh^w46*VVj(o6b^rZ^J4Dt^`)tdtsW6-pvrh?fd^Bmi6m2%fe*;4aum~1 zAW(2K3;=8$fIC5|D)VPz+`oGjnW`#PG+rrPCWJdSd)UMEBW>p16F_e5|Ka}YwSzz^ zuLTz%M@U&D$Zu`N0FB!I;RJBTq`XHe8jytW0a7#%wGN7ACHvC#2iJdQ#h$l=CpsXh z<*5m;Di1IId!Q`a)#k9a?H@u`li>NJowJnaeLCXSX=LC|vKcarht)&Y9L)ksfJ|`& z59bgb*kHo>N@@hyesi-zZgJ9;PM{K$Bdk*8ccKz@ilqr`+#P!omI`J{GZ*l8uiOx1 zsc?W{bYzY~JLU+UwCR7GQ~8?6nBcyU${}95m1R_(JEgY~g$iJ}_Z*r#Ug2TjKIODh zCQZ+2A}fJK2>v~^KlGN6{~tqtp(1rZMg0{oVhydiuc41>fHJH*-?%-`{AmPHXzBN` zCBTv_QdF!+YSV%`X_jYMh+ePTX;{}#&Bvfk!&)$E;?2T(l_q~^6Iw=}ayKVSDqzsj z!r2+|4>?#nty?*E!}K?FL4rJaokaiCP#*Bu{&knN{+Xp7xOHGjZNfq`5wGj?#toFh zQEy69inZQKtu+XcU4K9w#-Kda*X6ndZtd@Mg$K_#B9x(ZWY{OG8Z2fO(MVFWI+m4F zBh|V-VWmmGQOAE;z@{5tu-OLU=iHXl_(MoxTe>afN+Y3+NTRzW1;0Ys(3`ft<5^l` zLgi4(&_aAlL{O}fv6Eo?HPoNC2`73andufYT7KVcDOv6L){mh6rp)Y+VZH7U;h}W<=k#Quq5kyT{_C02 z|KBbi0K;QX%va0SQFcu?jF#kCTGK<7xSuuyvHaqmN+NF4*I(R_vv7LgG9Vsa#0D=N zWsB7iF6@7==~qS_74hhyljK5u!{r2Gml7&FZcH-SI@4+KU6yw3`%IPe@wJ#ICJ5{} z_&t*X(*C!FeoGLwvgPjD4btasPe&tz3!zPJ?Pfa_3nk|?uz8#gT53cdCJhlBQ3BED zX@@-dShEli2;*Whgz$6fq)U5Lk|-9CA1nLe5_EqKun#onZq9SCkr;ySh4g!Fh5?Ef zaTxpWS(6AEK?oS&wzeg6vUt}ZNO4@foug+sArC#|Q;#<)F21k+1d9Z?KglwUnXycA zXj$X1C~3_}Ub+zwm8Xz?tOo((T@9VRI@VfqQE~cTeLpJ&unxKAxbCh}V}yH8-e{Ou zs-1t!ZfK#E#q^`Wv4#y&-R`m z{=mxJ?m!Q4AiH!!yV`H4GA|iT8F|IoDe!*;W)z_cKy#LvOq!{wH%zyf=ZGP84S10} zA;GZ?+NHhogs%|kfM@V3T`%0*q8iklFf4!dWZ1SKMzX*h=X(5^g9}j*KHACtW54cx zwY_Gtl%)iO9az)C-|jt*%n%%3z3B4$VN1ow2ruCl2-3#sWY8x|4NKZG41UX)82pY-Mk#< zGJR82xYi9Bbk-Te7m6o`$X46Y>bS_O)#eAJkD*a;h`3#rCQcW0P0B&_v+RS%EbGt} zu)V_9*vS7yc={A8K-*P1qZ!CQ#^`Tr#)&aWWlYMVi0}MT4AwFbOc2GQ9VLtzT%xiN zE*G}a+FMgwRRw6qU)h_u=bwKZBrbFk!rVOpv^S-aFTxo+a3CiC+2kwa;$}>EsS&&B4y1~6-&aqJ~^Z?(WJ8u75Hi#2U362jS7>#-`P}{ zB7T|@L1Cb8>J;E}OYE~hxi=KXzPAcnRvyHFIC_2`zVW^1*>%0q$wOA;v-dJU z1CwC(WQ*7G#4vuJW@Yf!K;VvtUuAfD>X{6t6R!CQCQ~!5MHt1MW-?ABdOpdrKhdap zQoB6OSR}`er;pEc0(|Y>m{e9T6yu9k)lg^R18AEQER?46y-7!UEctWp7E^(RIst@`%ds=4ULn z*>KT6p?R^dOMI^B$87FD2cr-^&4gicd;Q3AfqTDz{752a#KNYEn}2d!3>Y--b( zheX=-c^{JyPXqo_KKkzA`%C*cyEMsrkJ+Ql0-tllj@o~Te|S;G7rd2g#p8t99kHV~ z7aFQ9t-}yHY=!2hV3&i z$9s^|Q$%jN_lfV&RpK?Af~F75?}q-7j>1gpTl0>17{x+Ux|z^LI88)OGTbM0f$Qjj z)Lw9NOq+iksbNnq1-u6UeXC>V=1U-^(>eJ+&rQwNl`Ed-n#u99y+W(X4# z_i}s*REOw}(yUCX!au(KOZH+rATS_rVrmLBI5sc}Wo~3|VrmMP!Nma+ zlW&tIf3;d|bKAxd{;pqvx}FJ`5id9#-mdx3%88RGIAp2Lltm`$u8T;v_D3VSZR1dRX#Z*a`W>7e9h4 zIXW|mNuEWqe(al{UVpW?eDnHBJ!Cwdrf_nqAG!{2#I~8mDTyLpg!k`eWcJU+_h)m) zbCM-AnA40D()%Qdl=J_t&NAhJVA<4Nf7SI>eH%3EVAr5OHl;i|{B0|ORdrkS_TVuD zttd=rd2G*12}z4|!b>@GUXshJ=fRAa!~iMlu*ix1#L3pc`T(&q!`#eRm2g?GT`yGHLsOkAq8cxfI4a zGoU96mkj_F>jbKv2Fo_06aJ#R@*!wyfIEb#6>HH#tiD5{I`Rp^#b&!uL=fV5RaW5r&I@lAiCnj;) zod;cCwi2i7w%LLCf=EEJh;SCWC7Ci&Vjfo$Gm0okxCCjZvluPEulh|@2dn0AvlS|d z%xdPi;N@7Y_u=xQgb(I1e`Lwg@+yFMe#l2o4bSSg)_>5Xhhk9~KlC{<+4MUdtL< zaCJz8$11pakc<7+0(&kuu)q@EhZW(kLuRC`AQ{(2g_qxq$_2%uf16NaGq?sf(L4gi zBF0iUia`@2Og#b>uml&8V6iECd@RigqnwXcs=#~CtVMcHpRB{@pUX|;x&!GD8FqeF z%^2fA`qDL#D)5A7W-~~)N^@r{36I85<|6}uyV4_1>XGMGQP+`uj1BCg`sa9LShyU$ zmym?H)t|@z-Ft+Pe_@C~nCPFLsYGQ3CyAw!OCBTmbmJg zMcMzLx-wwM+%1_-R99D6j~LfbpI*jNAEmlX`;MUh+3e^C9*B#)(}$SnMxOW*2M2WU?S^QbJ&Knc@qNM{lJsrWy!Sqxw{2hwad zWu;-KXV2^g{#hfy5i17V_UJ0aHxrW7(VOBhPQ3s#jg(8pHLCi~WvEw1lYzcI0i6=U zYa}?t@?2xhDk#$l;zr3pQ5bTQl;^+%8L1La(ScsWf0?VTwKe@lqc7#*ZB@&pgvENZ zdecHzgej!OQ3idSWnY?7s}jzoCUQEI^7P2mZ8>eKbcRYGy@9otLEMZ!GOte=Cly#u z64NWhK$(Th5F@^TQVNe&8OzP;Kv+mxb#sb0jxq@PHfTXc8C2kk(-{;#bMU7Wx_!+y zVZ9nJe=XM;CZ}z#hWf`nCO)3%vyf91ZlNzrvte5bNe3Om2E+a?tcW1zMutJ=%3cl> zlxy4{21npdX|&j1?V5q54CT8OIw$+U751z{2h6b=7uMA9kJHpYX8iiFyHQntdIo}2 z4dQTDZjUx(ZnHm6Z+1Q2O}9aD9)1Lk4P~W2e{=?!y9S`ziY4$GG@rWXGJc^PYQG8o zsZq+co~1yS{bQVUZCOP*{3@aS!W2DM@T# ze|U2^-Ubh)Bv-YC`W`IRjO`p)LZLr~tQs}=x;=zlO;@7E8dcwk?HY$Q2dLC#H(@tT zL5dm(f2u|*2|B34mObUo36#eXoXUye=cl3-n?`S}aM}ixTo+t^ZEz>eM`;(!p;&l{ z73N*|ZifA?{LyO&C3K%yP$R;Wd+e{&e=0avkUQ#ii5z`QCe$BJoh#vdQn(#i@k?_v zN+~_O1W~Epxha?LRd$@?oIv*T!=V(*5JKq_X{WMI(Q_7e{BKE z^3AK!TrYz+m>D#jnzarB3cWPEVWS#NN0may9#2J8j!Jx(qQlgGbj!Bd_ezIjS#c{- zJ#Pf5P<1j-%iiQ@4Gdpyt6wF%$d_pnyO~qybzC+p3p-v8Z^~{nJOVU{ab$n5I@_?a z*d2SwemP-96cq#ZL&Ock_Fkwle?gSz>Idfa%&YssP?Kj?ous)^Cn(j*;J2-GpGI4E zJ~|xFomdQ?kAg$h-ge!>G?VDjqxgV}VKe1XfCSBxQy%4@)$)R$_9*l9JMM?gmvAGc z(Rv^@GRN|tM!i480=pJZe6vguh+_kce|6c;Xc68X z7Do2{F=wKJ=cg~>&b#3+=+rk;qQO6r`kn$f3k?V2I@T4-AY*91->N3Z9TH9Z*V=7rX~!9TuY6nj6S`! z2Pkma$T>~L_E*t1#|0WfnYfW_`17eshLc}h>%y>;1o~lr?uVhg>6$G>-A#_C0}_K9 z_!AL9k16N87eVhBB#~Dk)+%!=GR?REUPSS*PEwrS(%*&N$uep9fBzb5<-Y9H#h6me z^^9?Kb8uHd^^}eWn;^;5O(E2ns{S|7ICryzxs^difj!c?wTf3Ghi6s9t- zY&r{YhNaInzz+xoBrlgV!UGXrVq0Mh1zrI~bvp7+#mG8?mjsC-$vnL1L0lv2h;#we zD{TlU-z-Ihskz;9BbM(G;k&YuGs>#dQwD9ua7yYX6Psqcf9j4@3$7x|uolJgS`n9* z``{H5kFz42xE`FR`QY|d=HTCEJO)B9sJV|gef4@RuUyy7R*N*8*4*RH>PAMtuI{x) zz098sE3z?pOLJbyZwx;3qT_vHFe>ITNi2hL@kZ4QB4g&Uv65`sJ(YF}Bqu#t-TA-Z+b4lhS^rORXDZUsJdN5U+Fe^Yv23Lx=1VP@!aq|9>fDgoL` zcy_umim_F(D)N!W$aG>84N}1fbDLd#_wv=N;DxLg92hM#SorDkmE>|%y>?=}xO@%W z)DJ&gy#9K08k%|J4VDK`jv$oklJQnv1>;DA*2f8^l(ak~NORYZ@pn9N=NN7(DAVvb_5 z3s5e~t06zb2RVFS!QbTf6h&r|XZq%P8{SH$E~$ zWSm2HEdaKJW81cE+qQXQ=f+M>Y}>Y-8{4*R+j{*5J?ei@qrK{@TDt(%$WTqm^<=#G zRaj)@-3ntcDZ^f_Q>N_1QU!TZwlsA#+R+Y6@$Ge5<$j(qs+L{uco`sMYGN-c@9&mK zQjYGEEMZi!|4&DK1_7eeI$B8E>-oHg`JY#&l-BVIG{%h$sR27HS3BI^>tQ_%|+?lMos3?j?Q9ZCJTfAZ`NL?pjxApRJ4Y=yGSjn!f1iW^NO)x zIFV0#kGz`W(2p(ZmT%o|`^lcOx4Tl8`9@6b?`d;rCp?juA^2ZGoD25$ByU zEt0on^QaM{WT?U*duC_b2e%q?!*7B#2|f)Odg_nN;rMzE1;$2c(vYLc-kC7Dq=$4i z+98Gti$+*(;_rEu0$Zm5`1~l_1D|sRddr@+N*v;gcEtD)T^GU5uNcx!%%rcti|x_N z{zm_K=OiJ)Qla^u%z}gYznKLyH)m2|kuacJXVYnO4B2;8b81inTy6^59HMPpgTS>m)-`npU{UvDBn?sdz7nA*vPlUgvG0$9#aG4EzXai}c% z?QQl;zk2rPO@IP%Izy3Q#*fG3Lelt$Zsq9s%JxDPIdL7NR_-os{X3&4BOyJB3koo1 z>wD78mpAnTtQc^ao?j3Tt;ei805G1|ODto(J(woiR(lGwkRq#g)H9Xx zF)4bg^*UDiB_s!-os{X;O;Pg2tI6zdXT?dMwQP@;X7~txDpUcDoD8&4Y|La`mDy>u z4qK>L5Rvm+qG9wmjV0e7N_hT$EYFc-FZ#c4?Odxy+<1Yk&&npQxPD~t1p=D$LE^fb zXBIsZ63WoAV0$FzGxFxRSd@X>FCC<#=(SjDSQlzpRP0wDt0|WG*Na^{W;UuJRMW_0 zF=?IRcK7~z92@Jd<~OCzSB#M|!MAx$Et<1CNS48aNkO%qMJM=9gs#-jyb@nT7e?7- zX_9LfiwkFR=zmF3E;6C9#RI0Y@DqD#J{}UydFyCB6fzQc>$J`8%0KPel@M#K7w9g0 z7HPb>E6Ox-QBBQ&HO;}5o5(#UHkZdlgoR8Pszc7^Mu~T3i{Be6C0|(_bZr4W&zaV` zidt~yXaQ|w$#dBfRKmMUe5D1!ea!CL@6}rxF{_tR$UFp z%I(MvkroIx0{4>DO!5gp*9@o@ca_s>(I0g0Y#O7hi%fl8LjsDRb0~SDT3E!a8S;*+w0$ct`C>*$X;;VXN>*C@ z;BzG$E0<>jh$s^@5a3Unc+;m!&g_W3NY;=MhB3cWE+bSz=^|}_;KPJYQb2r3x#!2} zpDvyMST{XEp6-+}O}Pa*js4n+i0Jt)w6d&ntXgVhnsLsjB3*JI0j^0%^%V{g0XuP} z8l`BaGPwHEuXo#Q!WJ%08UNy5qBw^wFoEt5eonViy{BUH1W(ZX{FZ*{_fIKGfU#6C!thJL&|1A)n_dS zAJ1VK4e@{C1GG%}@@bqHx9grLAxN39nU5o2Wl^F_NR;RYj=RNM#9At4ac`mDGHA zMz0!H#Ti=vvpQA&)5^ighdkrw4N)DMr~0@z7K;GYqA)qmTlB}Tc&zCA zafDn8B62LBhjd|L106_nIQPXdVudaIUaQt0OiYJamu-}i+$7i|FvbF_lNwlb#Dzl- z)i)5E2RQCQ7+{TzOONHe6?}ou;mW#x{8_F-Q}O_6Xt?QN|`2$L4;R`W-Xxz-}Y_$JO&8GXls(i|8)c3e6DUk3|7 z48C<)J%l;g;jjkhFr?s_$Kp@`#&hpzDX`ay$4KY*tP&Z?R6}h28Q%GGGfbrUeT^G><6~R=T%V_> z6RP7#uC+`Zedx!er4ct+>#0}$Ui+#2d!G7OP$Nj=Qkgs>K%6s{trlV;{<0CAo& z+f;iFZ5>^wE$VM}?Fu;2)c9bItGtoxkQWC*qW#f7oD`Rs3ZUU~K!H>@S7D|g$Ew=% zG!S*BlhG2XO`_!tv}37_))63>ml*00YVttgV&E1?5TexJ=)}9|&YruFAykeO zaw6OIE6W?$GG*HSF>Z6y#LX2c0C?(lzF>+z(KTqL#w<1B)}GqQxu4%(d5Pb&Amu-z zb82~D?68(x$jeBc#_MM;v>Vmj0V2x`aPXL`{pk{ z4#7?|WF>15QC3`!A7)GP56r>|#@ywf~zfD-VeMoTGLiSsw@e~AbpoCTY-4i6s zM@o)EK`(sB=gE+zKs()>OH!#J~L5Ad-0sA!)6qLCN0 zS{2@)+A(AI692%=8Ervii;mvQmI+~z@16LoO~lo@+UI8GhnYHtEmI>c7W7dWx=Mi( zoD=q6QLjyQg%~sZ00ruaEh|-t6N5;sW-&Lv~pFXAa%a)QFBvQb7V4Z#`+AzHk z8do+@NRbv|e1E~5L=0sH2yDXEJpCV;wk&tTo!*YMWq8T59*2$ZfEalSN4Wur4`G8w zk0ZNs7UfmHZTZ}6fFf6VIO``E++f4eoT{tIX`SE7z1b-y(jQ)x(fAO1IPXkFw?kAX z8YnKpp|XYO+lV>wGKAokZ-e*XtQ>t{@iTjOVX$a0cp~0p+|HBY`m7r+2rSvr=aB$N ztkmEsI}B`CyWV;BS8H?#$21TCXj}aL$#nF*Hi)Oa=WSRi;4#Nwkt|s}pyf%x1N0+7 ztacm>s_tZLlpY=Ok_eO#O*A|0Z1@kOFhv1&G+u5*_8itW4VoV(v;!Wd%3;Q<>Abwn#{KN{ld z3R!THNMlx!fG%aSKN+j*g*6v^HasMA4T*)7ezs%$O!>zae|ETZfF;z`&Q;K(+IJF! z9_>!Mb(ag-O1B}+j^ksfDnE{uX3;`uRS8*0u?J6*bptQKF_HzMB(>p3c=K)<={`HszfEpIS&nwg;w*9ESLX56_iG3g`rZ+_R{PX|q7M@OaQ?sayn z4ITMDz@l5j0OA||45*E1w{>N>^H!K0uzvk|-sc~5E1RV<`1rJud**1Hl}r7S^+%$V zttzBu5Ti2+o4jaHyt4%%idtQo(aX@CI1jb0x|7joyqw`eFgcuS!O2LVL{J=mjH>GK zUufcW+tUkS>FOQKbL?R;Ag)Sp#(|gKi9dTkfUO$QCx6O5@HC^oZ6!#Mnl{@NXwyXS zMF{Drtr%~eXje$$Q!2f#I}@IT7I6CF(Bb6afJV% zG883qa(i{z%kcQ|y$$%oA71=6>lZC^`Q6t?%`y5c(YB?DMnV6k8x7GCSNUW z2u3SoKen=9XuoCid2Lpk8(D=hhTyRSK*Nr5=v6_=;0%8k57XDC$A18!N$6h~eTow} zQjoJrm|^p@HXXiGekZGo=2)r`9}&eJm8M{-$yyXHF~7GQr#pLfPG1H^(jqP#{gkJ@ z9iSb!h;)BA{Fya*`FHnR1P}bsoiG&Papv-;C>_p=G0>_7sC~JS=lbLkxwi8fP~c(q zr@@jiy|&UA`gQ%7&?khPkukuh_PHL+syx#o=ye0_11_5)8d?oc)d)7vx1Ds!0ufCt zbBF%d!uR>0HoUG;SUE_ouf~Zpky~Z`X*0F^7z3ibbuJz)&|X}*9g`<7Q_zZ%QjR}G zuD=Eb%fJvo#OUaPsLY%ZsPl&g|E4KeuY~;w7IxV;z&j_7TI^qX&VK;%8}sJQoi?er z0S|bW}Ab-J7!{gKgT9sSs0p z^JjboJqf-VbiLJ^cH++Z-EDwCZ;f)lZoz)zDG!iD{%*}4pPbF!Hl20w7tTM=&q_}D zV6_uY%0F5Axrj)U6uqNp(0rNtxtbE1D~}Y(gkur{8G^RA~ zWF@fZ+Ib@deZHB^2`%O|I~L>{MxN<3gDKs}*`sDIrc28;?4CNx-Q1M9fGp~DHkKhd zpElnpug9@nB?YBfBusH~$j*CK%lmEozE2(c&Atx4 z5!XUZ1Ik&SS#o#JELFeC>vO??&;~d?KECi>1jjG48v9~1s z%g83TG-41qOvx0fWw#-1^qak$5M+u44@R-MkH~YS2h?3aaC^ej)=s@Es;kq;3gn6* zyV;x+AiO`*wl2&^s0!F*jeVAC5Ohxlodqru0m;SdlkLHPP}yk7R`Is3h?NceWNh2; zY$ovxUAIjOF$Bk{lsjz4IlfeC5`(#}qbAaxbVr=qiRTF;QR)3c1rP#)?A*mP-j27e zF}4jN2J6nk&6fD=OuZzNSB|_KPnpDIr`I(RckryPG}M`gFKp}#DyG}xtJFOF#!c)r zfMdhXd3n!+WwElo!GJVItP^&xK#sInBg*~y>f`Nh4kXvdGTYlp{XR9h_DtU2_f1Yj zJvuCS#(&YXf_C!D=NIMvckE`a_%$w_wiDn#ZLAz5;KWf}FqL(Cw`RC0=tG@4v3BmC z;laUD43RGasF)yuW5^ z{-_}UJpyvPa*+>JUmEXSWukvegk={O;{km?KaZ1dQHE0)R|)Z%`%;8{Ie0S14tl-o zX0|@1MV;CReg%9Hm*(j7mzA^=6TDvSHaPmOZ%yDAyDN6<;CIe2Vw78-b2C$G0Pazt zEgV*I*CZq7Yej`!P1)73nTQ`zYYFM&Ptmn@1P@ zn%n+yW$&WZ%QI_D`upZ|jGvs5HYJONDbkD9mm@pF%g1L*)QaHZ319y+v>nf?VLEAa zBe{{+ocmC2bge0{M=#je@KpT~fEIP;M+dc#(mr?Evw7!=N9!5Qzh13Wo4Z=^Ng z>-T05oev!muR*NutGodd-X|wS#~nUg4`)4!1{ejaBF@e$l;0J(YFjmd2k9A0-#n(N zru88#Qm8wHXx+?TxcG+vXsJHvWS3Aqx_w~kJ*e!Y4UX>16gbln9JWw9@wwud%DrcJ z_Eh(Xn`b!a4!MM_G^BsTvhjAvrSIfF?-&vywKzt2Vb~de3?WYUC=y|36@dQ2!J2xH z>9T2Pr(c18QGqJ_8@LI69=^1iLfo@`xY*u|;(Qd10C%O47d3tdfTSU%Zh%k%$N5gb ztIeYLmj~l@;B+9f`S0Z(Bd+4Bxr%GXGQ;CbFa%5L-Y7U<-eD+!j1MI#Szp>~Svx0q z9eF#;F=1}F1t*WLnweD=R%N1sX;ZQQl}t7L$YVHSo*?Uf3LPIOzRo1ADGX+cLXZyd zG!;QeUG09YS&^6m`r(`e)J(^;Y$B6_G)RG?mB&@NgP9%hf#6I>f+|gR&rlDd41cix zooH?`i^?+-NCPoe=3CljS2WsBsFnG;UV5!N11~P*k zNI}TWiZS_${E#UpS6U=QR>>n$hsg4jqN1G@kvxHwd9=R*(8^4KM0;;xsUiID{9crv z0*slahlN230(Dgd&t}T~&?a(1at}OxY8=n}KTY?>#ome0`OcC_OJ5ryl$tj?bg=Jr zaFtwMb(7ve%h2`9I5!bsKj4LIw9^j^;8N3-K5D$M^R(DL@doHI>g^f~E|(4U-i}Q< zit}lcGiE~p@A;e{j%&0Dnzht-P2{&FXvxZgB0N1XakONZ7-Q8Dl^yGAU~Uq8mag2E z1}DHztDv|O7Pc)6n+W<_x8M#PAYkIx_U%h{y!#f!Qt?AVkr6oeO{=2Z@b)wq*H2Fr zReeUpH9!8aU4kh?4=>N@~JFkY)_dHz}onwlXbTjP&F*I1XfEzA5O>SO}gp zN8MSl7cox^%}wCS08&OZ9gOv}?` z@zi7hQG%^^N{i@htRe(SW$K+-ULr4C{cDKO_;qQRQ)3$VOmtX}Q~?!TEt&|^-nP-; z4rZBbR0dWOOF`6yyca}}0>J}~E``cDu@Ra8ykxH@$%}nI6Gg_kwKYX z6_H7xCNTGw(+$c}D3;g|&jden_8<%gZOm?Gqu()7sxs62t zb-1a$*&~qj{IL2N&$JNJ@X-F0WWVQfJ=V~3ybZi>g#lV;3{Yq%%$7G^ihgsgu2eA! zoNb#|#1#}YROuf-e96Oep2#bKv84>X!G7if?Z> zrnRStSbBWULDIFDO@McBUJULP(P-HmO$ajB)r}6gKPm#St|prPD6p?SHj=w;ty`%- z_H%~p6b)IGZ+C?10tvASm>5aI`gsgCpO`Z&B@zr@GbG#)^ea|5oL!slAG~Bh=(Edh z;dAs4QXE`TkRW1Qt^#CFk(ku)lm0d>h5(k%aOd+x9s-KjYT)U}T)(n%}+vR+PD4=KIO(?Ig1O|D3 zOFt(aSzpWF-3EHLkMX7n!b%~4-yiEJOaC1+wcok5y+Y~tCIiXMbC;KoKV5^W&!$Gj zeT8wW!)aMNP8EG?#Ms^5f`{$hhko8KP`CvvJChQL{QVMeXDf=TFN?^@xlCc}vXZI6 z^#|(>m-5{P*iP^8ZY>c#?Bs|t`f9fw*R@f#nO-IxAB};A@^k5bN*SU7>6ctv!uhv_kL1@0jAc+{z@(c$r|Ulb)Uv(YMD@mWtR56s*8K``7mg&@mf*dzpVj9N-oc9 zK)f5oy)ic=o;Yuo4Y;j>FL5{Fp&|teNoQyqHf^hD8ahcjm6Te>EX};J0=!4}E(=CB-&AJ7PF^&vGE$ zFso9GawYzj`YV0_Mo{u;1}wdnPf@6Xm{L#39(BP9Kh{KwY%J-+b``%nT`DrR}b{8nw2sgYF z_loJ&4=aNvkQ4&+haYvr9^L=W_COfDUDJ*Bw;JDn9X!92it{=)wLBVoqPiYSY-aZ% zI2JhyLH4qJ$Z&epw6idLrLJ~QracK5bO(@R4 zw;JqdvAEp=9`Ep1R+yG2qy^W9nqrG!>d$&TK(PmGGXc>_ajaD6bC8(xfXjg=s!bd( zkgWGN{E>e2hCkYZL_M^fS(d5{Ssz0>NC5|xZZ>_Ar-_@@qgSOAPYk_~s=CrziSLLY zbn}vjdXU@V-Vp8qF5ksU@pqMotRt8q0xlq*2T^{22@gZttufq6_$vcWFEb~oWXYY~ ze0g4X3CKprc#V2`v`F7gnm-ITqr?BMZ|yd~?^*rlnkK)5CK>LdXj(1OxL+=PlN7>s zN3B8k)`|rM{hLv{SVkvRx6Z3Lcg5=>UnoGp`9T|~@>}-NaK=`}LEnrPY-zvn*vwCK z15Y2RiU0$>zrgy~xTXKoDsuj}Rb*x7WJ+S~69d>Ejv@QLY9jT66d*-S-cYO`6^$O| zIPU3=uwVpqLs>?&rl&~JOUGP;y$AWYC_Kj`)2%n*5=jMmVtGqxtUfPQT)Yp%f}Vst zjeha#6Zrg!d&OM~pYaoXIrS}x&VI4$dl6DV9x@>{aAq7#C+Er$AUusuC2b`sAIYae z{s6*?=8x*)17Fjjj1x*cOjrgPS^jt&pZE3t_?$L%CcIXZM^YHhebUK-GCXA!c%A<< zV0g4%@jCTvSz+V`=NjB>@bkV6c){}e_{PM*Nf}k93gWsSAyNLDqo+>*=n>%V>3Z|1 zF>D#x4`Du(DH4LJXyzF&bFQOJ3t63>Tmk4F%lFWA6yD#-s`8=9E6Yc%7ihW}6kH{e z>`9x$1*NM+cp6YIcHkJp)afwZ5*Pjlk&Sg0gIa^Jp07%2^174M`EzIywLB%5e`o$i z4QP$U?BEHklv+U8a@`wv#IhHKuFy2VG7xnR4Z$32WV5qMygt5RP=>p7$ zmuK=aP(}jL7N!=zXOgXmM2w2-i8#VeRq+4#^Ue)@a7bBhMqBZ}+1`s3jF+G>3#MWNqydoXr77=^HlGu8xZ#hvo}ioZ%1OD`eR7d&mgSbeDigLei;jiNtVLji=T3f4Hq z)QUCc>g&Wb$GedkY3>HRj2N(W*AJz-b;*CVpz;0I)e{%WgP=sE3Arbafacr zszN6k^b7lUtC_cAHZtpK>uWnE?nIFzO#(!|CYu%c5!8|} zaH};(vcPG_F5W!}jt{#mc~1o}B!x%xccolUeI!=tboF=mF76E|R!DnwNu2%4^3?$B z+W}yHOxQ0|bWP#jmw-)@0AQ&2=`mw4-MmSRaw*q+{%P3a+dg^|6K(;y4;c}0DZ6$V zn(!SMNZ7<7k%=7#Ak`Q&{1{Dq8u`E_;>Ak@@oHi>h?ij;3SMh;dquFeo$OQG4-tCi zF%%LRl5%ooi8Lyno zu|QV#NB0;R4J17+fQ7p=ovO7c7bZ8ooTdPpg<(G?59ue zNs7Cn5^QD#N^?53OE*`##T%2Wdebo5BJkqZY;FFb4oasl3=zHC zZMW;h^YL`rApli>dt&7L#F4nEc@$A0)R@cy<2k%vhp6&%h=m0UD-~VXlf89ZHgN8F zZ;W95D=MHifd=96{C&KXR?RsY?>ovxRl>I*Xu0pg4SYvd%7#spLF2P)IKlkJF_!ova*D6W|DmI>UTuGiMb;6Ah8?>{lu4 z!B|g~QUnpV&0H!61x~j0TQfeY|Gux`pP39Vwf(V& zwhgS1v$T)o@vRJ?CCc%L?kqkbI*9RI=Ceq0_cD|-hw$MO4&5)$>3|{gR#1^v8TI3= zY+Ds51>m}o8u7()1ZPPA90k5k^q`r9yHxsW{sh=Xgg6`ThX=RTx7pGyu*DB7Lu*-9 zRxn{*7FJ)4wdwl=eykbjyYlp|po8)JuqQ}0a||j;;n1)`;wKrY%gUa8zqdLo!%it& z(>S(BV=zD*E0S`y;eYfHVm0>FLgpur1Um�B)xz+*-yAH)0YB>fnVq=S1*FA|eZj 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⋙~OXy$FGs(XlYeJd$27UGe)^W;T3>c;` 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 z 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ɼ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

kxxX^Q-_?-mG_$kaR3{A7Lnf6(}hE`;`cap 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 diff --git a/doc/bash.ps b/doc/bash.ps index deccb7a74..5a7dc2d8a 100644 --- a/doc/bash.ps +++ b/doc/bash.ps @@ -1,13 +1,13 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Mon Mar 19 09:43:22 2018 +%%CreationDate: Fri Sep 7 15:34:15 2018 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic %%+ font Courier %%+ font Symbol %%DocumentSuppliedResources: procset grops 1.22 3 -%%Pages: 80 +%%Pages: 81 %%PageOrder: Ascend %%DocumentMedia: Default 612 792 0 () () %%Orientation: Portrait @@ -340,7 +340,7 @@ F .475(xtended deb)-.15 F(ug-)-.2 E (~/.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 5.0)72 768 Q -(2018 March 15)144.29 E(1)198.45 E 0 Cg EP +(2018 August 7)145.395 E(1)199.555 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 5.0)72 768 Q(2018 March 15)144.29 E(2)198.45 E -0 Cg EP +F(ariable)-.25 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(2)199.555 +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 5.0)72 768 Q(2018 March 15)144.29 E(3)198.45 E 0 Cg EP +-2.5 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(3)199.555 E 0 Cg EP %%Page: 4 4 %%BeginPageSetup BP @@ -714,8 +714,8 @@ E -.15(xe)-.15 G(cuted with left associati).15 E(vity)-.25 E 5(.A)-.65 G (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 March 15)144.29 E -(4)198.45 E 0 Cg EP +(cuted in the list.).15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E +(4)199.555 E 0 Cg EP %%Page: 5 5 %%BeginPageSetup BP @@ -802,9 +802,9 @@ 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 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 1.953 -(used, the string to the right of the operator is considered an e)144 -493.2 R 1.953(xtended re)-.15 F 1.953(gular e)-.15 F 1.953 +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 @@ -844,8 +844,8 @@ F0 .597(with inde)2.847 F 3.097(x0i)-.15 G(s)-3.097 E .049 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 697.2 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(5) -198.45 E 0 Cg EP +(operators.)180 697.2 Q(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(5) +199.555 E 0 Cg EP %%Page: 6 6 %%BeginPageSetup BP @@ -993,8 +993,8 @@ F .478(xit status is zero, the)-.15 F F1(then)2.978 E F2(list)2.978 E F0 -.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 March 15)144.29 E(6)198.45 E 0 -Cg EP +(done)2.5 E F0(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(6)199.555 E +0 Cg EP %%Page: 7 7 %%BeginPageSetup BP @@ -1128,7 +1128,7 @@ F .952(ord be)-.1 F .952(ginning with)-.15 F F1(#)3.451 E F0 .951 (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 698.4 Q .3 -.15(ve s)-.25 H(hells.).15 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(7)198.45 E 0 Cg EP +(2018 August 7)145.395 E(7)199.555 E 0 Cg EP %%Page: 8 8 %%BeginPageSetup BP @@ -1233,7 +1233,7 @@ 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 March 15)144.29 E(8)198.45 E 0 Cg EP +768 Q(2018 August 7)145.395 E(8)199.555 E 0 Cg EP %%Page: 9 9 %%BeginPageSetup BP @@ -1384,7 +1384,7 @@ F0 5.144(.I)C 2.644(ft)-5.144 G .144(he control v)-2.644 F .144 (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 March 15)144.29 E(9)198.45 E 0 +(The)5.834 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(9)199.555 E 0 Cg EP %%Page: 10 10 %%BeginPageSetup @@ -1422,2272 +1422,2298 @@ F2($1)A/F3 10/Times-Italic@0 SF(c)A F2($2)A F3(c)A F2(...)A F0(",)A .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 .606 +(ening separators.)-.15 E F2(@)108 249.6 Q F0 .722 (Expands to the positional parameters, starting from one.)144 249.6 R -.605(When the e)5.605 F .605(xpansion occurs within dou-)-.15 F .113 -(ble quotes, each parameter e)144 261.6 R .113(xpands to a separate w) --.15 F 2.614(ord. That)-.1 F .114(is, ")2.614 F F2($@)A F0 2.614("i)C -2.614(se)-2.614 G(qui)-2.614 E -.25(va)-.25 G .114(lent to ").25 F F2 -($1)A F0 2.614("")C F2($2)-2.614 E F0 2.614(".)C(..)-2.614 E .135 -(If the double-quoted e)144 273.6 R .135(xpansion occurs within a w)-.15 -F .135(ord, the e)-.1 F .134 -(xpansion of the \214rst parameter is joined)-.15 F .15(with the be)144 -285.6 R .15(ginning part of the original w)-.15 F .151(ord, and the e) --.1 F .151(xpansion of the last parameter is joined with)-.15 F .338 -(the last part of the original w)144 297.6 R 2.838(ord. When)-.1 F .337 -(there are no positional parameters, ")2.838 F F2($@)A F0 2.837("a)C(nd) --2.837 E F2($@)2.837 E F0 -.15(ex)2.837 G(pand).15 E -(to nothing \(i.e., the)144 309.6 Q 2.5(ya)-.15 G(re remo)-2.5 E -.15 -(ve)-.15 G(d\).).15 E F2(#)108 321.6 Q F0 -(Expands to the number of positional parameters in decimal.)144 321.6 Q -F2(?)108 333.6 Q F0(Expands to the e)144 333.6 Q +.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 F2108 345.6 Q F0 .881 -(Expands to the current option \215ags as speci\214ed upon in)144 345.6 -R -.2(vo)-.4 G .881(cation, by the).2 F F2(set)3.382 E F0 -.2(bu)3.382 G -.882(iltin command, or).2 F(those set by the shell itself \(such as the) -144 357.6 Q F22.5 E F0(option\).)2.5 E F2($)108 369.6 Q F0 .214 -(Expands to the process ID of the shell.)144 369.6 R .214 +E(ground pipeline.)-.15 E F2108 381.6 Q F0 .882 +(Expands to the current option \215ags as speci\214ed upon in)144 381.6 +R -.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 393.6 Q F22.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 381.6 Q F2(!)108 393.6 Q F0 .499(Expands \ +(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 393.6 R -.15(xe)-.15 G(cuted).15 E -(as an asynchronous command or using the)144 405.6 Q F2(bg)2.5 E F0 -.2 +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 417.6 Q F0 1.692 -(Expands to the name of the shell or shell script.)144 417.6 R 1.691 -(This is set at shell initialization.)6.692 F(If)6.691 E F2(bash)4.191 E -F0(is)4.191 E(in)144 429.6 Q -.2(vo)-.4 G -.1(ke).2 G 3.077(dw).1 G .577 -(ith a \214le of commands,)-3.077 F F2($0)3.077 E F0 .578 -(is set to the name of that \214le.)3.077 F(If)5.578 E F2(bash)3.078 E -F0 .578(is started with the)3.078 F F23.078 E F0 .369 -(option, then)144 441.6 R F2($0)2.869 E F0 .369 +(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 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 F23.077 E F0 .368 +(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.368 E -(-)-.2 E(wise, it is set to the \214lename used to in)144 453.6 Q -.2 +-.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 465.6 Q F0 .054 -(At shell startup, set to the absolute pathname used to in)144 465.6 R --.2(vo)-.4 G .255 -.1(ke t).2 H .055(he shell or shell script being e).1 -F -.15(xe)-.15 G(cuted).15 E .692(as passed in the en)144 477.6 R .692 +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 .691(xpands to the last ar)-3.341 F .691(gument to the) --.18 F(pre)144 489.6 Q .57(vious command, after e)-.25 F 3.07 +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 .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 .771 -.1(ke e).2 H .571(ach command).1 F -.15(exe)144 501.6 -S 1.6(cuted and placed in the en).15 F 1.6(vironment e)-.4 F 1.6 +-.2(vo)-.4 G .77 -.1(ke e).2 H .57(ach command).1 F -.15(exe)144 537.6 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 -513.6 Q(ed.)-.1 E F2(Shell V)87 530.4 Q(ariables)-.92 E F0(The follo)108 -542.4 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA) -108 559.2 S(SH).3 E F0(Expands to the full \214lename used to in)144 -559.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 571.2 S(SHOPTS).3 E F0 2.548(Ac)144 583.2 S .049 -(olon-separated list of enabled shell options.)-2.548 F .049(Each w) +549.6 Q(ed.)-.1 E F2(Shell V)87 566.4 Q(ariables)-.92 E F0(The follo)108 +578.4 Q(wing v)-.25 E(ariables are set by the shell:)-.25 E F2 -.3(BA) +108 595.2 S(SH).3 E F0(Expands to the full \214lename used to in)144 +595.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 607.2 S(SHOPTS).3 E F0 2.549(Ac)144 619.2 S .049 +(olon-separated list of enabled shell options.)-2.549 F .049(Each w) 5.049 F .049(ord in the list is a v)-.1 F .049(alid ar)-.25 F .049 -(gument for the)-.18 F F22.549 E F0 1.398(option to the)144 595.2 +(gument for the)-.18 F F22.548 E F0 1.398(option to the)144 631.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 .476(appearing in)144 -607.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 619.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 631.2 Q -(ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 643.2 S(SHPID).3 E -F0 .187(Expands to the process ID of the current)144 655.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 667.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 679.2 Q .3 -.15(ve n)-.2 H +3.648 E 3.898(w\). The)-.25 F(options)3.898 E .477(appearing in)144 +643.2 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 655.2 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 667.2 Q +(ariable is read-only)-.25 E(.)-.65 E F2 -.3(BA)108 679.2 S(SHPID).3 E +F0 .188(Expands to the process ID of the current)144 691.2 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 .548 +(stances, such as subshells that do not require)144 703.2 R F2(bash) +3.048 E F0 .548(to be re-initialized.)3.048 F .549(Assignments to)5.549 +F F1 -.27(BA)3.049 G(SHPID).27 E F0(ha)144 715.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 F2 -.3(BA)108 691.2 S(SH_ALIASES).3 E F0 1.195(An associati)144 -703.2 R 1.495 -.15(ve a)-.25 H 1.195(rray v).15 F 1.195(ariable whose m\ -embers correspond to the internal list of aliases as main-)-.25 F .16 -(tained by the)144 715.2 R F2(alias)2.66 E F0 -.2(bu)2.66 G 2.66 -(iltin. Elements).2 F .16 -(added to this array appear in the alias list; ho)2.66 F(we)-.25 E -.15 -(ve)-.25 G .96 -.4(r, u).15 H(nsetting).4 E 4.503 -(array elements currently does not cause aliases to be remo)144 727.2 R --.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If) -9.503 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(10)193.45 E 0 Cg EP +-2.5 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(10)194.555 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)144 84 S(SH_ALIASES).3 E F0 +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 120 R +-.15(ve)-.15 G 7.003(df).15 G 4.503(rom the alias list.)-7.003 F(If) +9.502 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 F1 -.3(BA)108 96 S(SH_ARGC).3 E F0 .935(An array v)144 108 R .935 -(ariable whose v)-.25 F .934 +-2.5 E F1 -.3(BA)108 144 S(SH_ARGC).3 E F0 .934(An array v)144 156 R +.934(ariable whose v)-.25 F .934 (alues are the number of parameters in each frame of the current)-.25 F -F1(bash)3.434 E F0 -.15(exe)144 120 S .535(cution call stack.).15 F .535 +F1(bash)3.435 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 132 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 -144 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 156 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 168 Q F1 -(extdeb)2.5 E(ug)-.2 E F0(after the shell has started to e)2.5 E -.15 -(xe)-.15 G(cute a script may result in inconsistent v).15 E(alues.)-.25 -E F1 -.3(BA)108 180 S(SH_ARGV).3 E F0 .979(An array v)144 192 R .979 + script)5.535 F -.15(exe)144 180 S .141(cuted with).15 F F1(.)2.641 E F0 +(or)2.641 E F1(sour)2.641 E(ce)-.18 E F0 2.641(\)i)C 2.641(sa)-2.641 G +2.641(tt)-2.641 G .142(he top of the stack.)-2.641 F .142 +(When a subroutine is e)5.142 F -.15(xe)-.15 G .142 +(cuted, the number of).15 F 2.631(parameters passed is pushed onto)144 +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.13 G +(SH_ARGC).27 E F0 2.63(only when in)4.88 F -.15(ex)144 204 S .283 +(tended deb).15 F .283(ugging mode \(see the description of the)-.2 F F1 +(extdeb)2.784 E(ug)-.2 E F0 .284(option to the)2.784 F F1(shopt)2.784 E +F0 -.2(bu)2.784 G .284(iltin belo).2 F(w\).)-.25 E(Setting)144 216 Q F1 +(extdeb)3.363 E(ug)-.2 E F0 .863(after the shell has started to e)3.363 +F -.15(xe)-.15 G .862(cute a script, or referencing this v).15 F .862 +(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 .979(An array v)144 252 R .979 (ariable containing all of the parameters in the current)-.25 F F1(bash) 3.48 E F0 -.15(exe)3.48 G .98(cution call stack.).15 F(The)5.98 E .275(\ \214nal parameter of the last subroutine call is at the top of the stac\ -k; the \214rst parameter of the initial)144 204 R 1.424 -(call is at the bottom.)144 216 R 1.424(When a subroutine is e)6.424 F +k; 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 228 S(SH_ARGV).27 E F3(.)A F0 2.197(The shell sets) +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 .965 -(description of the)144 240 R F1(extdeb)3.465 E(ug)-.2 E F0 .966 +(description of the)144 300 R F1(extdeb)3.465 E(ug)-.2 E F0 .966 (option to the)3.465 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.466 E(ug)-.2 E F0 -.966(after the shell)3.466 F(has started to e)144 252 Q -.15(xe)-.15 G -(cute a script may result in inconsistent v).15 E(alues.)-.25 E F1 -.3 -(BA)108 264 S(SH_ARGV0).3 E F0 .251(When referenced, this v)144 276 R -.251(ariable e)-.25 F .251 +.966(after the shell)3.466 F .32(has started to e)144 312 R -.15(xe)-.15 +G .32(cute a script, or referencing this v).15 F .319(ariable when)-.25 +F F1(extdeb)2.819 E(ug)-.2 E F0 .319(is not set, may result in)2.819 F +(inconsistent v)144 324 Q(alues.)-.25 E F1 -.3(BA)108 336 S(SH_ARGV0).3 +E F0 .25(When referenced, this v)144 348 R .25(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 288 R -.15(ve)-.15 G +F1($0)2.751 E F0 2.751(;s)C(ee)-2.751 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 300 R F1($0)2.747 E F0 5.247(.I)C +1.224(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 312 Q F1 -.3(BA)108 324 S -(SH_CMDS).3 E F0 .667(An associati)144 336 R .967 -.15(ve a)-.25 H .667 +.15 E(if it is subsequently reset.)144 384 Q F1 -.3(BA)108 396 S +(SH_CMDS).3 E F0 .668(An associati)144 408 R .968 -.15(ve a)-.25 H .668 (rray v).15 F .668(ariable whose members correspond to the internal has\ -h table of commands)-.25 F .196(as maintained by the)144 348 R F1(hash) -2.696 E F0 -.2(bu)2.696 G 2.696(iltin. Elements).2 F .195 +h table of commands)-.25 F .195(as maintained by the)144 420 R F1(hash) +2.695 E F0 -.2(bu)2.695 G 2.695(iltin. Elements).2 F .196 (added to this array appear in the hash table; ho)2.696 F(we)-.25 E -.15 (ve)-.25 G -.4(r,).15 G .852(unsetting array elements currently does no\ -t cause command names to be remo)144 360 R -.15(ve)-.15 G 3.352(df).15 G -.853(rom the hash)-3.352 F 2.5(table. If)144 372 R F1 -.3(BA)2.5 G +t cause command names to be remo)144 432 R -.15(ve)-.15 G 3.352(df).15 G +.852(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 F1 -.3(BA)108 384 S(SH_COMMAND).3 E F0 1.243 -(The command currently being e)144 396 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 +(ubsequently reset.)-2.5 E F1 -.3(BA)108 456 S(SH_COMMAND).3 E F0 1.242 +(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.243 +(cuted, unless the shell is e).15 F -.15(xe)-.15 G 1.243(cuting a).15 F (command as the result of a trap, in which case it is the command e)144 -408 Q -.15(xe)-.15 G(cuting at the time of the trap.).15 E F1 -.3(BA)108 -420 S(SH_EXECUTION_STRING).3 E F0(The command ar)144 432 Q +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 F12.5 E F0(in)2.5 E -.2(vo)-.4 G -(cation option.).2 E F1 -.3(BA)108 444 S(SH_LINENO).3 E F0 .692 -(An array v)144 456 R .692(ariable whose members are the line numbers i\ -n source \214les where each corresponding)-.25 F .97(member of)144 468 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 480 R F1 -(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0 17.171(\)w)C(here)-17.171 +(cation option.).2 E F1 -.3(BA)108 516 S(SH_LINENO).3 E F0 .693 +(An array v)144 528 R .692(ariable whose members are the line numbers i\ +n source \214les where each corresponding)-.25 F .969(member of)144 540 +R F2(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 F1(${B)5.969 E(ASH_LINENO[)-.3 E/F4 +10/Times-Italic@0 SF($i)A F1(]})A F0 .97 +(is the line number in the source)3.469 F 14.672(\214le \()144 552 R F1 +(${B)A(ASH_SOURCE[)-.3 E F4($i+1)A F1(]})A F0 17.172(\)w)C(here)-17.172 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 492 Q(ASH_LINENO[) +17.171(sc).1 G 14.671(alled \(or)-17.171 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 -504 Q(.)-.55 E F1 -.3(BA)108 516 S(SH_LO).3 E(AD)-.4 E(ABLES_P)-.35 E --.95(AT)-.74 G(H).95 E F0 4.07(Ac)144 528 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 540 Q F1(enable)2.5 E F0(command.) -2.5 E F1 -.3(BA)108 552 S(SH_REMA).3 E(TCH)-.95 E F0 .006(An array v)144 -564 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 576 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 588 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 600 R -.25(va)2.5 G(riable is read-only).25 E(.)-.65 E -F1 -.3(BA)108 612 S(SH_SOURCE).3 E F0 .125(An array v)144 624 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 .005(An array v)144 +636 R .005(ariable whose members are assigned by the)-.25 F F1(=~)2.506 +E F0 .006(binary operator to the)2.506 F F1([[)2.506 E F0 .006 +(conditional com-)2.506 F 2.507(mand. The)144 648 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 660 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 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 .126(An array v)144 696 R .125(ar\ iable whose members are the source \214lenames where the corresponding \ -shell function)-.25 F .781(names in the)144 636 R F2(FUNCN)3.28 E(AME) +shell function)-.25 F .78(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 F1(${FUNCN)3.28 E(AME[)-.2 E F4($i)A F1(]})A -F0(is)3.28 E(de\214ned in the \214le)144 648 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 F1 -.3(BA)108 660 S(SH_SUBSHELL).3 E F0 -.296(Incremented by one within each subshell or subshell en)144 672 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 684 Q 2.5(vironment. The)-.4 F(initial v) -2.5 E(alue is 0.)-.25 E F1 -.3(BA)108 696 S(SH_VERSINFO).3 E F0 2.645 -(Ar)144 708 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 720 S -(lues assigned to the array members are as follo).25 E(ws:)-.25 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(11)193.45 E 0 Cg EP +(The shell function)5.78 F F1(${FUNCN)3.281 E(AME[)-.2 E F4($i)A F1(]})A +F0(is)3.281 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 August 7)145.395 E(11)194.555 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 -.3(BA)144 84 S(SH_VERSINFO[).3 E F0(0)A F1(])A F0(The major v)264 84 -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 96 S(SH_VERSINFO[).3 E F0(1)A F1(])A -F0(The minor v)264 96 Q(ersion number \(the)-.15 E F2(ver)2.5 E(sion)-.1 -E F0(\).)A F1 -.3(BA)144 108 S(SH_VERSINFO[).3 E F0(2)A F1(])A F0 -(The patch le)264 108 Q -.15(ve)-.25 G(l.).15 E F1 -.3(BA)144 120 S -(SH_VERSINFO[).3 E F0(3)A F1(])A F0(The b)264 120 Q(uild v)-.2 E -(ersion.)-.15 E F1 -.3(BA)144 132 S(SH_VERSINFO[).3 E F0(4)A F1(])A F0 -(The release status \(e.g.,)264 132 Q F2(beta1)2.5 E F0(\).)A F1 -.3(BA) -144 144 S(SH_VERSINFO[).3 E F0(5)A F1(])A F0(The v)264 144 Q(alue of) +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 .296(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.644 +(Ar)144 132 S .144(eadonly array v)-2.644 F .144 +(ariable whose members hold v)-.25 F .144 +(ersion information for this instance of)-.15 F F1(bash)2.645 E F0 5.145 +(.T)C(he)-5.145 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 156 S(SH_VERSION).3 E F0 -(Expands to a string describing the v)144 168 Q +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 -180 Q(ORD)-.1 E F0 .396(An inde)144 192 R 2.896(xi)-.15 G(nto)-2.896 E +258 Q(ORD)-.1 E F0 .397(An inde)144 270 R 2.897(xi)-.15 G(nto)-2.897 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 204 R -.25(va)-.2 G 1.181 +(ord containing the current cursor position.)-.1 F .396(This v)5.396 F +(ari-)-.25 E 1.18(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 216 Q(ogrammable Completion)-.18 E -F0(belo)2.5 E(w\).)-.25 E F1(COMP_KEY)108 228 Q F0(The k)144 240 Q .3 +(db).1 G 3.681(yt)-3.681 G 1.181(he programmable completion f)-3.681 F +1.181(acilities \(see)-.1 F 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 252 Q F0 1.207 -(The current command line.)144 264 R 1.208(This v)6.208 F 1.208 +H(he current completion function.).1 E F1(COMP_LINE)108 330 Q F0 1.208 +(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 276 R -.2(vo)-.4 G -.1(ke).2 G 5.349(db).1 G 5.349 +(ilable only in shell functions and e).25 F 1.207(xternal com-)-.15 F +2.848(mands in)144 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 288 Q(w\).)-.25 E F1(COMP_POINT)108 300 Q F0 .666(The inde) -144 312 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 +(acilities \(see)-.1 F F1(Pr)5.349 E 2.849(ogrammable Completion)-.18 F +F0(belo)144 366 Q(w\).)-.25 E F1(COMP_POINT)108 378 Q F0 .667(The inde) +144 390 R 3.167(xo)-.15 G 3.167(ft)-3.167 G .666 +(he current cursor position relati)-3.167 F .966 -.15(ve t)-.25 H 3.166 (ot).15 G .666(he be)-3.166 F .666(ginning of the current command.)-.15 -F .667(If the)5.667 F .535 +F .666(If the)5.666 F .534 (current cursor position is at the end of the current command, the v)144 -324 R .534(alue of this v)-.25 F .534(ariable is equal to)-.25 F F1 -(${#COMP_LINE})144 336 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 348 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(db).1 G 2.5(yt)-2.5 G +402 R .535(alue of this v)-.25 F .535(ariable is equal to)-.25 F F1 +(${#COMP_LINE})144 414 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 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 -360 Q F0 .042(Set to an inte)144 372 R .042(ger v)-.15 F .041(alue corr\ +438 Q F0 .041(Set to an inte)144 450 R .041(ger v)-.15 F .041(alue corr\ esponding to the type of completion attempted that caused a completion) --.25 F .337(function to be called:)144 384 R F2 -.5(TA)2.837 G(B).5 E F0 +-.25 F .338(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 396 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) +C .337(or listing completions after successi)-2.837 F .637 -.15(ve t) +-.25 H(abs,).15 E F2(!)144 474 Q F0 4.091(,f)C 1.591 +(or listing alternati)-4.091 F -.15(ve)-.25 G 4.092(so).15 G 4.092(np) -4.092 G 1.592(artial w)-4.092 F 1.592(ord completion,)-.1 F F2(@)4.092 E F0 4.092(,t)C 4.092(ol)-4.092 G 1.592(ist completions if the w)-4.092 -F 1.591(ord is not)-.1 F 1.552(unmodi\214ed, or)144 408 R F2(%)4.052 E +F 1.592(ord is not)-.1 F 1.553(unmodi\214ed, or)144 486 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 420 S 2.929 +(ilable only in shell functions and).25 F -.15(ex)144 498 S 2.928 (ternal commands in).15 F -.2(vo)-.4 G -.1(ke).2 G 5.429(db).1 G 5.429 (yt)-5.429 G 2.929(he programmable completion f)-5.429 F 2.929 -(acilities \(see)-.1 F F1(Pr)5.428 E(ogrammable)-.18 E(Completion)144 -432 Q F0(belo)2.5 E(w\).)-.25 E F1(COMP_W)108 444 Q(ORDBREAKS)-.1 E F0 -1.335(The set of characters that the)144 456 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 468 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 480 Q F1(COMP_W)108 492 Q(ORDS)-.1 E -F0 .653(An array v)144 504 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 516 R +(acilities \(see)-.1 F F1(Pr)5.429 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.336(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.335 +(ord separators when performing w)-.1 F(ord)-.1 E 3.125(completion. If) +144 546 R F3(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 558 Q F1(COMP_W)108 570 Q(ORDS)-.1 E +F0 .654(An array v)144 582 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 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.082 E .831(described abo)144 -528 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 540 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 552 Q(OC)-.3 E F0 .169(An array v) -144 564 R .169(ariable \(see)-.25 F F1(Arrays)2.669 E F0(belo)2.669 E +(COMP_W)4.332 E(ORDBREAKS)-.09 E F0(as)4.083 E .832(described abo)144 +606 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 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 .168(An array v) +144 642 R .168(ariable \(see)-.25 F F1(Arrays)2.668 E F0(belo)2.669 E .169 (w\) created to hold the \214le descriptors for output from and input) --.25 F(to an unnamed coprocess \(see)144 576 Q F1(Copr)2.5 E(ocesses) --.18 E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1(DIRST)108 588 Q -.55(AC) --.9 G(K).55 E F0 2.26(An array v)144 600 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.095(Directories appear in the stack in the order the)144 612 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 624 R 1.432 +1.094(Directories appear in the stack in the order the)144 690 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 702 R 1.432 (ariable may be used to modify directories already in the stack, b)-.25 -F 1.432(ut the)-.2 F F1(pushd)144 636 Q F0(and)2.746 E F1(popd)2.746 E +F 1.431(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 .35(will not change the current directory)144 648 R +F(ariable)-.25 E .351(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.851 -(ni).15 G(f)-2.851 E(it is subsequently reset.)144 660 Q F1(EPOCHREAL) -108 672 Q(TIME)-.92 E F0 .338 -(Each time this parameter is referenced, it e)144 684 R .337 -(xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144 -696 Q F2(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(EPOCHRE-)2.917 E(AL)144 708 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 720 Q(GNU Bash 5.0)72 768 Q(2018 March 15) -144.29 E(12)193.45 E 0 Cg EP +(is unset, it loses its special properties, e)2.6 F -.15(ve)-.25 G 2.85 +(ni).15 G(f)-2.85 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(12) +194.555 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(EPOCHSECONDS)108 84 Q F0 .337 -(Each time this parameter is referenced, it e)144 96 R .338 +(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 .337(Each time this parameter is referenced, it e) +144 108 R .338(xpands to the number of seconds since the Unix Epoch)-.15 +F(\(see)144 120 Q/F2 10/Times-Italic@0 SF(time)2.917 E F0 .417 +(\(3\)\) as a \215oating point v)B .416 +(alue with micro-second granularity)-.25 F 5.416(.A)-.65 G .416 +(ssignments to)-5.416 F/F3 9/Times-Bold@0 SF(EPOCHRE-)2.916 E(AL)144 132 +Q(TIME)-.828 E F0 1.09(are ignored.)3.34 F(If)6.09 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.591(ni).15 G 3.591(fi)-3.591 G 3.591(ti)-3.591 G(s) +-3.591 E(subsequently reset.)144 144 Q F1(EPOCHSECONDS)108 156 Q F0 .338 +(Each time this parameter is referenced, it e)144 168 R .337 (xpands to the number of seconds since the Unix Epoch)-.15 F(\(see)144 -108 Q/F2 10/Times-Italic@0 SF(time)4.042 E F0 4.042 -(\(3\)\). Assignments)B(to)4.042 E/F3 9/Times-Bold@0 SF(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 120 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 132 Q F0 1.103(Expands to the ef) -144 132 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 144 Q(.)-.65 E F1(FUNCN)108 156 Q(AME) --.2 E F0 .479(An array v)144 168 R .479 +180 Q F2(time)4.041 E F0 4.041(\(3\)\). Assignments)B(to)4.041 E F3 +(EPOCHSECONDS)4.041 E F0 1.542(are ignored.)3.792 F(If)6.542 E F3 +(EPOCHSECONDS)4.042 E F0 1.542(is unset, it)3.792 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.104(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.103(This v)6.103 F 1.103 +(ariable is)-.25 F(readonly)144 216 Q(.)-.65 E F1(FUNCN)108 228 Q(AME) +-.2 E F0 .478(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 180 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 192 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 204 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 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 .111(This v)144 -234 R .111(ariable can be used with)-.25 F F1 -.3(BA)2.611 G(SH_LINENO) +-.25 F -.15(xe)-.15 G .479(cution call stack.).15 F .277 +(The element with inde)144 252 R 2.777(x0i)-.15 G 2.777(st)-2.777 G .276 +(he name of an)-2.777 F 2.776(yc)-.15 G(urrently-e)-2.776 E -.15(xe)-.15 +G .276(cuting shell function.).15 F .276(The bottom-most)5.276 F .384 +(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 .385 +(ariable e)-.25 F .385(xists only when a shell func-)-.15 F .076 +(tion is e)144 276 R -.15(xe)-.15 G 2.576(cuting. Assignments).15 F(to) +2.576 E F3(FUNCN)2.576 E(AME)-.18 E F0(ha)2.326 E .376 -.15(ve n)-.2 H +2.576(oe).15 G -.25(ff)-2.576 G 2.576(ect. If).25 F F3(FUNCN)2.575 E +(AME)-.18 E F0 .075(is unset, it loses its)2.325 F +(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 .11(This v)144 +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 246 S(ME).2 E F0 +(ach element of)-5.111 F F1(FUNC-)2.611 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 258 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 270 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 282 Q F1(GR)108 294 Q(OUPS)-.3 E F0 1.229 -(An array v)144 306 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 318 R F3(GR)3.071 E(OUPS)-.27 E F0(ha)2.822 E .872 +-2.512 F F1(${B)2.512 E(ASH_SOURCE[)-.3 E F2($i+1)A F1(]})A F0 1.184 +(at line number)144 342 R F1(${B)3.684 E(ASH_LINENO[)-.3 E F2($i)A F1 +(]})A F0 6.184(.T)C(he)-6.184 E F1(caller)3.683 E F0 -.2(bu)3.683 G +1.183(iltin displays the current call stack using).2 F +(this information.)144 354 Q F1(GR)108 366 Q(OUPS)-.3 E F0 1.228 +(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.229(.A)-.55 G(ssign-)-6.229 E +.572(ments to)144 390 R F3(GR)3.072 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 330 Q F1(HISTCMD)108 342 Q F0 .356 -(The history number)144 354 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 +3.072(ni).15 G 3.071(fi)-3.072 G 3.071(ti)-3.071 G(s)-3.071 E +(subsequently reset.)144 402 Q F1(HISTCMD)108 414 Q F0 .355 +(The history number)144 426 R 2.855(,o)-.4 G 2.855(ri)-2.855 G(nde) +-2.855 E 2.856(xi)-.15 G 2.856(nt)-2.856 G .356 (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 366 Q -.15(ve)-.25 G 2.5(ni).15 G +(HISTCMD)2.856 E F0 .356(is unset, it)2.606 F +(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 378 Q(AME)-.2 E F0 -(Automatically set to the name of the current host.)144 390 Q F1 -(HOSTTYPE)108 402 Q F0 .222(Automatically set to a string that uniquely\ - describes the type of machine on which)144 414 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 426 R(def) -2.5 E(ault is system-dependent.)-.1 E F1(LINENO)108 438 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 .223(Automatically set to a string that uniquely\ + describes the type of machine on which)144 486 R F1(bash)2.722 E F0 +.222(is e)2.722 F -.15(xe)-.15 G(cut-).15 E 2.5(ing. The)144 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 450 R .078(current sequential line number \(st\ -arting with 1\) within a script or function.)144 462 R .079 -(When not in a script or)5.078 F .307(function, the v)144 474 R .307 -(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.306 E -F3(LINENO)2.806 E F0 .306(is unset, it loses its)2.556 F -(special properties, e)144 486 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 498 Q +ber representing the)144 522 R .078(current sequential line number \(st\ +arting with 1\) within a script or function.)144 534 R .078 +(When not in a script or)5.078 F .306(function, the v)144 546 R .306 +(alue substituted is not guaranteed to be meaningful.)-.25 F(If)5.307 E +F3(LINENO)2.807 E F0 .307(is unset, it loses its)2.557 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 510 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 522 Q F2 +es the system type on which)144 582 R F1(bash)3.398 E F0 .898(is e)3.398 +F -.15(xe)-.15 G .898(cuting, in).15 F(the standard GNU)144 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 534 Q F0 .294 -(An array v)144 546 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 558 S(riable name is supplied.).25 E F1 -(OLDPWD)108 570 Q F0(The pre)144 582 Q(vious w)-.25 E +(ault is system-dependent.)-.1 E F1(MAPFILE)108 606 Q F0 .293 +(An array v)144 618 R .293(ariable \(see)-.25 F F1(Arrays)2.793 E F0 +(belo)2.793 E .293(w\) created to hold the te)-.25 F .294 +(xt read by the)-.15 F F1(map\214le)2.794 E F0 -.2(bu)2.794 G .294 +(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 594 Q(ARG)-.9 E F0 1.626(The v)144 606 R 1.627 +(OPT)108 666 Q(ARG)-.9 E F0 1.627(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 F3 -(SHELL)4.127 E -.09(BU)144 618 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(OPTIND)108 630 Q F0 1.652(The inde)144 642 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 F3(SHELL)4.151 E -.09(BU)144 654 -S(IL).09 E(TIN COMMANDS)-.828 E F0(belo)2.25 E(w\).)-.25 E F1(OSTYPE)108 -666 Q F0 .329(Automatically set to a string that describes the operatin\ -g system on which)144 678 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 690 Q(ault is system-dependent.) --.1 E F1(PIPEST)108 702 Q -.95(AT)-.9 G(US).95 E F0 .61(An array v)144 -714 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 726 Q -.15 -(xe)-.15 G(cuted fore).15 E -(ground pipeline \(which may contain only a single command\).)-.15 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(13)193.45 E 0 Cg EP +F1(getopts)4.127 E F0 -.2(bu)4.127 G 1.626(iltin command \(see).2 F F3 +(SHELL)4.126 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.651(The inde)144 714 R 4.151 +(xo)-.15 G 4.151(ft)-4.151 G 1.651(he ne)-4.151 F 1.651(xt ar)-.15 F +1.652(gument to be processed by the)-.18 F F1(getopts)4.152 E F0 -.2(bu) +4.152 G 1.652(iltin command \(see).2 F F3(SHELL)4.152 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 August 7)145.395 E(13)194.555 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(PPID)108 84 Q F0(The process ID of the shell')144 84 Q 2.5(sp)-.55 G +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.829 E F0 .329(is e) +2.829 F -.15(xe)-.15 G 2.829(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 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 96 Q F0(The current w)144 96 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 108 Q F0 .565 -(Each time this parameter is referenced, a random inte)144 120 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 132 +(RANDOM)108 180 Q F0 .566 +(Each time this parameter is referenced, a random inte)144 192 R .565 +(ger between 0 and 32767 is generated.)-.15 F(The)5.565 E .01 +(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 144 Q -.15(ve)-.25 G 2.5 +(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 156 Q F0 1.546(The contents of the)144 168 R +-2.5 E F1(READLINE_LINE)108 228 Q F0 1.547(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/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 180 Q F0(belo)2.25 E(w\).)-.25 E F1 -(READLINE_POINT)108 192 Q F0 .314 -(The position of the insertion point in the)144 204 R F1 -.18(re)2.813 G +1.547(bind -x)4.047 F F0(\(see)4.047 E F2 1.546(SHELL B)4.047 F(UIL)-.09 +E 1.546(TIN COM-)-.828 F(MANDS)144 252 Q F0(belo)2.25 E(w\).)-.25 E F1 +(READLINE_POINT)108 264 Q F0 .313 +(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 F4 .313(bind -x)2.813 F F0(\(see)2.813 E F2 -(SHELL)2.813 E -.09(BU)144 216 S(IL).09 E(TIN COMMANDS)-.828 E F0(belo) -2.25 E(w\).)-.25 E F1(REPL)108 228 Q(Y)-.92 E F0 -(Set to the line of input read by the)144 240 Q F1 -.18(re)2.5 G(ad).18 +.313(or use with)-2.813 F F4 .314(bind -x)2.814 F F0(\(see)2.814 E F2 +(SHELL)2.814 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 252 Q F0 .795(Each time this parameter is referen\ -ced, the number of seconds since shell in)144 264 R -.2(vo)-.4 G .795 -(cation is returned.).2 F .713(If a v)144 276 R .712 +-.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 .712(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 288 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 300 Q -.15(ve) +F .408(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 .407 +(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 312 Q F0 3.263(Ac)144 324 S -.763(olon-separated list of enabled shell options.)-3.263 F .763(Each w) +(ubsequently reset.)-2.5 E F1(SHELLOPTS)108 384 Q F0 3.262(Ac)144 396 S +.763(olon-separated list of enabled shell options.)-3.262 F .763(Each w) 5.763 F .763(ord in the list is a v)-.1 F .763(alid ar)-.25 F .763 -(gument for the)-.18 F F1144 336 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 348 R F2 -(SHELLOPTS)2.52 E F0 .019(are those reported as)2.27 F/F5 10 +(gument for the)-.18 F F1144 408 Q F0 1.174(option to the)3.674 F +F1(set)3.674 E F0 -.2(bu)3.674 G 1.174(iltin command \(see).2 F F2 1.173 +(SHELL B)3.673 F(UIL)-.09 E 1.173(TIN COMMANDS)-.828 F F0(belo)3.423 E +3.673(w\). The)-.25 F(options)3.673 E .019(appearing in)144 420 R F2 +(SHELLOPTS)2.519 E F0 .019(are those reported as)2.269 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 360 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 372 Q(ariable is read-only)-.25 E(.)-.65 E F1(SHL)108 384 Q -(VL)-.92 E F0(Incremented by one each time an instance of)144 396 Q F1 -(bash)2.5 E F0(is started.)2.5 E F1(UID)108 408 Q F0 -(Expands to the user ID of the current user)144 408 Q 2.5(,i)-.4 G +5.019(.I)C 2.519(ft)-5.019 G .019(his v)-2.519 F .02 +(ariable is in the en)-.25 F(vironment)-.4 E(when)144 432 Q F1(bash) +3.142 E F0 .642(starts up, each shell option in the list will be enable\ +d before reading an)3.142 F 3.141(ys)-.15 G .641(tartup \214les.)-3.141 +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 424.8 R .994(wing v)-.25 F .994 +E(.)-.65 E .993(The follo)108 496.8 R .993(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 436.8 -Q -.65(w.)-.25 G F1 -.3(BA)108 453.6 S(SH_COMP).3 E -.95(AT)-.74 G F0 -1.192(The v)144 465.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 477.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 489.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 501.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 +(bash)3.494 E F0 .994(assigns a def)3.494 F .994(ault v)-.1 F .994 +(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.193(The v)144 537.6 R 1.193(alue is used to set the shell')-.25 F +3.693(sc)-.55 G 1.192(ompatibility le)-3.693 F -.15(ve)-.25 G 3.692 +(l. See).15 F 1.192(the description of the)3.692 F F1(shopt)3.692 E F0 +-.2(bu)3.692 G(iltin).2 E(belo)144 549.6 Q 2.871(wu)-.25 G(nder)-2.871 E +F1 .371(SHELL B)2.871 F(UIL)-.1 E .371(TIN COMMANDS)-.92 F F0 .372 +(for a description of the v)2.872 F .372(arious compatibility le)-.25 F +(v-)-.25 E .361(els and their ef)144 561.6 R 2.861(fects. The)-.25 F +-.25(va)2.861 G .361 +(lue may be a decimal number \(e.g., 4.2\) or an inte).25 F .36 +(ger \(e.g., 42\) corre-)-.15 F 1.75 +(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.751 (is unset or set to the empty)5.201 F .578(string, the compatibility le) -144 513.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 525.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 537.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 549.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 561.6 Q F1 +4.028 E .248(set to a v)144 597.6 R .248(alue that is not one of the v) +-.25 F .248(alid compatibility le)-.25 F -.15(ve)-.25 G .249 +(ls, the shell prints an error message and).15 F 1.12 +(sets the compatibility le)144 609.6 R -.15(ve)-.25 G 3.62(lt).15 G +3.619(ot)-3.62 G 1.119(he def)-3.619 F 1.119(ault for the current v)-.1 +F 3.619(ersion. The)-.15 F -.25(va)3.619 G 1.119(lid compatibility le) +.25 F -.15(ve)-.25 G(ls).15 E .575 +(correspond to the compatibility options accepted by the)144 621.6 R F1 +(shopt)3.075 E F0 -.2(bu)3.076 G .576(iltin described belo).2 F 3.076 +(w\()-.25 G .576(for e)-3.076 F(xam-)-.15 E(ple,)144 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 573.6 S(SH_ENV).3 E F0 .505 -(If this parameter is set when)144 585.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 597.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 609.6 R .525 +-.25 E(alue.)-.25 E F1 -.3(BA)108 645.6 S(SH_ENV).3 E F0 .506 +(If this parameter is set when)144 657.6 R F1(bash)3.006 E F0 .506(is e) +3.006 F -.15(xe)-.15 G .505(cuting a shell script, its v).15 F .505 +(alue is interpreted as a \214lename)-.25 F .354 +(containing commands to initialize the shell, as in)144 669.6 R F5 +(~/.bashr)2.855 E(c)-.37 E F0 5.355(.T).31 G .355(he v)-5.355 F .355 +(alue of)-.25 F F2 -.27(BA)2.855 G(SH_ENV).27 E F0 .355(is subjected) +2.605 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 621.6 Q +(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 633.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .481(If set to an inte)144 645.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 657.6 R F4 3.114(set -x)5.614 F F0 3.114 +108 705.6 S(SH_XTRA).3 E(CEFD)-.55 E F0 .48(If set to an inte)144 717.6 +R .48(ger corresponding to a v)-.15 F .481(alid \214le descriptor)-.25 F +(,)-.4 E F1(bash)2.981 E F0 .481(will write the trace output gener)2.981 +F(-)-.2 E 3.114(ated when)144 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 F2 -.27(BA)144 669.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 F2 -.27(BA)2.638 G -(SH_XTRA).27 E(CEFD)-.495 E F0 .138(or assigning it)2.388 F 2.531(the e\ -mpty string causes the trace output to be sent to the standard error)144 -681.6 R 7.531(.N)-.55 G 2.531(ote that setting)-7.531 F F2 -.27(BA)144 -693.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 705.6 Q(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(14)193.45 E 0 Cg EP +(he \214le descriptor is closed when)-8.114 F(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(14)194.555 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 10/Times-Bold@0 -SF(CDP)108 84 Q -.95(AT)-.74 G(H).95 E F0 1.247(The search path for the) -144 96 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 108 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/F2 10/Courier@0 SF(".:~:/usr")144 120 Q F0(.)A F1 -(CHILD_MAX)108 132 Q F0 .997(Set the number of e)144 144 R .997 +(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.53(.N)-.55 G 2.53 +(ote that setting)-7.53 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.99 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.248 +(The search path for the)144 144 R F2(cd)3.748 E F0 3.748(command. This) +3.748 F 1.247(is a colon-separated list of directories in which the) +3.748 F 3.795 +(shell looks for destination directories speci\214ed by the)144 156 R F2 +(cd)6.295 E F0 6.296(command. A)6.296 F 3.796(sample v)6.296 F 3.796 +(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 156 S 1.078(lue to be decreased belo).25 F 3.577 +5.997(.B)-.55 G .997(ash will not allo)-5.997 F 3.497(wt)-.25 G(his) +-3.497 E -.25(va)144 204 S 1.077(lue to be decreased belo).25 F 3.577 (waP)-.25 G 1.077(OSIX-mandated minimum, and there is a maximum v)-3.577 -F 1.077(alue \(cur)-.25 F(-)-.2 E(rently 8192\) that this may not e)144 -168 Q 2.5(xceed. The)-.15 F(minimum v)2.5 E(alue is system-dependent.) --.25 E F1(COLUMNS)108 180 Q F0 .828(Used by the)144 192 R F1(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 204 R 2.007 -(set if the)4.507 F F1(checkwinsize)4.507 E F0 2.006 -(option is enabled or in an interacti)4.507 F 2.306 -.15(ve s)-.25 H -2.006(hell upon).15 F(receipt of a)144 216 Q/F3 9/Times-Bold@0 SF -(SIGWINCH)2.5 E/F4 9/Times-Roman@0 SF(.)A F1(COMPREPL)108 228 Q(Y)-.92 E -F0 .847(An array v)144 240 R .848(ariable from which)-.25 F F1(bash) -3.348 E F0 .848 +F 1.078(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 .829(Used by the)144 240 R F2(select) +3.329 E F0 .828(compound command to determine the terminal width when p\ +rinting selection)3.329 F 4.506(lists. Automatically)144 252 R 2.006 +(set if the)4.506 F F2(checkwinsize)4.506 E F0 2.007 +(option is enabled or in an interacti)4.506 F 2.307 -.15(ve s)-.25 H +2.007(hell upon).15 F(receipt of a)144 264 Q F1(SIGWINCH)2.5 E/F4 9 +/Times-Roman@0 SF(.)A F2(COMPREPL)108 276 Q(Y)-.92 E F0 .848(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 252 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 +(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 -264 Q F1(EMA)108 276 Q(CS)-.55 E F0(If)144 288 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 F2(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 300 Q(uf)-.2 E -(fer and disables line editing.)-.25 E F1(ENV)108 312 Q F0(Similar to) -144 312 Q F3 -.27(BA)2.5 G(SH_ENV).27 E F4(;)A F0 +312 Q F2(EMA)108 324 Q(CS)-.55 E F0(If)144 336 Q F2(bash)2.536 E F0 .036 +(\214nds this v)2.536 F .036(ariable in the en)-.25 F .036 +(vironment when the shell starts with v)-.4 F(alue)-.25 E F3(t)2.535 E +F0 2.535(,i)C 2.535(ta)-2.535 G .035(ssumes that the)-2.535 F +(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 324 Q F0 2.717(Ac)144 -336 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 348 R F1 -.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 360 R -.15(xe)-.15 G 1.432 +(n)-2.5 E/F5 10/Times-Italic@0 SF(posix mode)2.5 E F0(.)A F2(EXECIGNORE) +108 372 Q F0 2.716(Ac)144 384 S .216 +(olon-separated list of shell patterns \(see)-2.716 F F2 -.1(Pa)2.717 G +(tter).1 E 2.717(nM)-.15 G(atching)-2.717 E F0 2.717(\)d)C .217 +(e\214ning the list of \214lenames to be)-2.717 F .117 +(ignored by command search using)144 396 R F2 -.74(PA)2.617 G(TH)-.21 E +F0 5.117(.F)C .116 +(iles whose full pathnames match one of these patterns)-5.117 F 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 372 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 -(pathnames)2.909 E .364(in the command hash table are not subject to)144 -384 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 396 R +(xe)-.15 G 1.433(cution via).15 F F2 -.74(PA)144 420 S(TH)-.21 E F0 +2.909(lookup. This)2.909 F .408(does not af)2.908 F .408(fect the beha) +-.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.908(commands. Full)2.908 F +(pathnames)2.908 E .364(in the command hash table are not subject to)144 +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 -(honors the setting of the)144 408 Q F1(extglob)2.5 E F0(shell option.) -2.5 E F1(FCEDIT)108 420 Q F0(The def)144 432 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 444 Q F0 -2.599(Ac)144 456 S .098(olon-separated list of suf)-2.599 F<8c78>-.25 E -.098(es to ignore when performing \214lename completion \(see)-.15 F F3 -(READLINE)2.598 E F0(belo)144 468 Q 2.704(w\). A)-.25 F .204 -(\214lename whose suf)2.704 F .205(\214x matches one of the entries in) --.25 F F3(FIGNORE)2.705 E F0 .205(is e)2.455 F .205 -(xcluded from the list)-.15 F(of matched \214lenames.)144 480 Q 2.5(As)5 -G(ample v)-2.5 E(alue is)-.25 E F2(".o:~")2.5 E F0(.)A F1(FUNCNEST)108 -492 Q F0 .231(If set to a numeric v)144 504 R .231 +(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.598(Ac)144 504 S .098(olon-separated list of suf)-2.598 F<8c78>-.25 E +.098(es to ignore when performing \214lename completion \(see)-.15 F F1 +(READLINE)2.599 E F0(belo)144 516 Q 2.705(w\). A)-.25 F .205 +(\214lename whose suf)2.705 F .205(\214x matches one of the entries in) +-.25 F F1(FIGNORE)2.705 E F0 .205(is e)2.455 F .204 +(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 .23(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 516 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 528 Q F0 2.923(Ac)144 540 S .423(olon-separated list of\ +-.15(ve)-.25 G 2.731(l. Function).15 F(in)2.731 E -.2(vo)-.4 G(-).2 E +(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.924(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 552 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 F3 -(GLOBIGNORE)144 564 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 F1(HISTCONTR)108 576 Q(OL)-.3 E F0 -2.653(Ac)144 588 S .153(olon-separated list of v)-2.653 F .153 +e)-2.924 F(xpan-)-.15 E 2.947(sion. If)144 600 R 2.947<618c>2.947 G .447 +(le name matched by a pathname e)-2.947 F .448 +(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.654(Ac)144 636 S .153(olon-separated list of v)-2.654 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 600 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 612 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.926 -(Av)144 624 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 636 R .698 +-2.653 F .153(If the list)5.153 F .49(of v)144 648 R .49(alues includes) +-.25 F F5(ignor)2.99 E(espace)-.37 E F0 2.99(,l).18 G .49(ines which be) +-2.99 F .491(gin with a)-.15 F F2(space)2.991 E F0 .491 +(character are not sa)2.991 F -.15(ve)-.2 G 2.991(di).15 G 2.991(nt) +-2.991 G .491(he his-)-2.991 F .558(tory list.)144 660 R 3.058(Av)5.558 +G .558(alue of)-3.308 F F5(ignor)3.068 E(edups)-.37 E F0 .558 +(causes lines matching the pre)3.328 F .557 +(vious history entry to not be sa)-.25 F -.15(ve)-.2 G(d.).15 E 2.925 +(Av)144 672 S .425(alue of)-3.175 F F5(ignor)2.935 E(eboth)-.37 E F0 +.426(is shorthand for)3.205 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.5 G .426 +(lue of).25 F F5(er)3.116 E(asedups)-.15 E F0(causes)3.196 E .699 +(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 648 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 F3(HISTCONTR)2.763 E(OL)-.27 E F0 .263 -(is unset, or does not include)2.513 F 2.941(av)144 660 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 F3 -(HISTIGNORE)144 672 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 684 Q -.05(ga)-.15 G -(rdless of the v).05 E(alue of)-.25 E F3(HISTCONTR)2.5 E(OL)-.27 E F4(.) -A F1(HISTFILE)108 696 Q F0 .181 -(The name of the \214le in which command history is sa)144 708 R -.15 -(ve)-.2 G 2.681(d\().15 G(see)-2.681 E F3(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 720 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(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(15)193.45 E 0 Cg EP +3.198(df).15 G .698(rom the history list before that line is)-3.198 F +(sa)144 696 Q -.15(ve)-.2 G 2.763(d. An).15 F 2.763(yv)-.15 G .263 +(alue not in the abo)-3.013 F .563 -.15(ve l)-.15 H .263 +(ist is ignored.).15 F(If)5.263 E F1(HISTCONTR)2.763 E(OL)-.27 E F0 .264 +(is unset, or does not include)2.513 F 2.942(av)144 708 S .442(alid v) +-3.192 F .442(alue, all lines read by the shell parser are sa)-.25 F +-.15(ve)-.2 G 2.941(do).15 G 2.941(nt)-2.941 G .441 +(he history list, subject to the v)-2.941 F .441(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.481 F(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(15)194.555 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(HISTFILESIZE)108 84 Q F0 1.623 -(The maximum number of lines contained in the history \214le.)144 96 R -1.622(When this v)6.623 F 1.622(ariable is assigned a)-.25 F -.25(va)144 -108 S .931(lue, the history \214le is truncated, if necessary).25 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.681(w\). The)-.25 F(def)2.681 E .181 +(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.622 +(The maximum number of lines contained in the history \214le.)144 144 R +1.623(When this v)6.623 F 1.623(ariable is assigned a)-.25 F -.25(va)144 +156 S .932(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 120 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 -132 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 144 R +(ontain no more than that number of lines by)-3.432 F(remo)144 168 Q .87 +(ving the oldest entries.)-.15 F .871(The history \214le is also trunca\ +ted to this size after writing it when a)5.87 F 1.245(shell e)144 180 R +3.745(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.244 +(Non-numeric v)6.244 F 1.244(alues and)-.25 F 1.021(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 156 Q F0(after reading an) -2.5 E 2.5(ys)-.15 G(tartup \214les.)-2.5 E F1(HISTIGNORE)108 168 Q F0 -2.657(Ac)144 180 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 192 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 204 R F1(*)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 9/Times-Bold@0 -SF(HISTCONTR)144 216 Q(OL)-.27 E F0 1.793(are applied.)4.043 F 1.793 +-.25 F 1.022(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.658(Ac)144 228 S .158(olon-separated list of patterns used to decide \ +which command lines should be sa)-2.658 F -.15(ve)-.2 G 2.657(do).15 G +2.657(nt)-2.657 G .157(he his-)-2.657 F .707(tory list.)144 240 R .707 +(Each pattern is anchored at the be)5.707 F .708 +(ginning of the line and must match the complete line)-.15 F .626 +(\(no implicit `)144 252 R F3(*)A F0 3.126('i)C 3.126(sa)-3.126 G 3.126 +(ppended\). Each)-3.126 F .626(pattern is tested ag)3.126 F .625 +(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 228 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 240 -Q -.15(ve)-.15 G 3.353(db).15 G .853(efore attempting a match.)-3.353 F +F3(&)A F0(')A 2.515(matches the pre)144 276 R 2.515(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.352(db).15 G .852(efore attempting a match.)-3.352 F .852(The second and subsequent lines of a multi-line compound)5.852 F -1.269(command are not tested, and are added to the history re)144 252 R --.05(ga)-.15 G 1.269(rdless of the v).05 F 1.269(alue of)-.25 F F2 -(HISTIGNORE)3.77 E/F3 9/Times-Roman@0 SF(.)A F0 -(The pattern matching honors the setting of the)144 264 Q F1(extglob)2.5 -E F0(shell option.)2.5 E F1(HISTSIZE)108 276 Q F0 1.387 -(The number of commands to remember in the command history \(see)144 288 -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 300 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 312 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 324 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E -F1(HISTTIMEFORMA)108 336 Q(T)-.95 E F0 .951(If this v)144 348 R .951 -(ariable is set and not null, its v)-.25 F .952 -(alue is used as a format string for)-.25 F/F4 10/Times-Italic@0 SF -(strftime)3.452 E F0 .952(\(3\) to print the)B .673 -(time stamp associated with each history entry displayed by the)144 360 -R F1(history)3.173 E F0 -.2(bu)3.172 G 3.172(iltin. If).2 F .672(this v) -3.172 F .672(ariable is)-.25 F .144 -(set, time stamps are written to the history \214le so the)144 372 R +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.769 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.888 E -.25(va)144 348 S 1.321 +(lue is 0, commands are not sa).25 F -.15(ve)-.2 G 3.821(di).15 G 3.821 +(nt)-3.821 G 1.321(he history list.)-3.821 F 1.32(Numeric v)6.32 F 1.32 +(alues less than zero result in)-.25 F -2.15 -.25(ev e)144 360 T .436 +(ry command being sa).25 F -.15(ve)-.2 G 2.936(do).15 G 2.936(nt)-2.936 +G .436(he history list \(there is no limit\).)-2.936 F .437 +(The shell sets the def)5.437 F .437(ault v)-.1 F(alue)-.25 E +(to 500 after reading an)144 372 Q 2.5(ys)-.15 G(tartup \214les.)-2.5 E +F3(HISTTIMEFORMA)108 384 Q(T)-.95 E F0 .952(If this v)144 396 R .952 +(ariable is set and not null, its v)-.25 F .951 +(alue is used as a format string for)-.25 F F4(strftime)3.451 E F0 .951 +(\(3\) to print the)B .672 +(time stamp associated with each history entry displayed by the)144 408 +R F3(history)3.173 E F0 -.2(bu)3.173 G 3.173(iltin. If).2 F .673(this v) +3.173 F .673(ariable is)-.25 F .144 +(set, time stamps are written to the history \214le so the)144 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 384 Q -F1(HOME)108 396 Q F0 1.27 -(The home directory of the current user; the def)144 408 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 420 S(lue of this v).25 E -(ariable is also used when performing tilde e)-.25 E(xpansion.)-.15 E F1 -(HOSTFILE)108 432 Q F0 1.015 -(Contains the name of a \214le in the same format as)144 444 R F4 +(ed across shell sessions.)-.15 F(This)5.144 E(uses the history comment\ + 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 456 R .551 +.55(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 468 R 1.059 -(xt time hostname completion is attempted after the v)-.15 F 1.059 -(alue is changed,)-.25 F F1(bash)144 480 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 F2(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 492 R F1(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 504 -Q(When)5 E F2(HOSTFILE)2.5 E F0(is unset, the hostname list is cleared.) -2.25 E F1(IFS)108 516 Q F0(The)144 516 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 528 S(rds with the).1 E F1 -.18(re)2.5 G(ad).18 E F0 -.2 +1.059(the shell is running; the ne)144 516 R 1.059 +(xt time hostname completion is attempted after the v)-.15 F 1.058 +(alue is changed,)-.25 F F3(bash)144 528 Q F0 .138 +(adds the contents of the ne)2.638 F 2.638<778c>-.25 G .138(le to the e) +-2.638 F .138(xisting list.)-.15 F(If)5.138 E F1(HOSTFILE)2.638 E F0 +.138(is set, b)2.388 F .139(ut has no v)-.2 F .139(alue, or)-.25 F .518 +(does not name a readable \214le,)144 540 R F3(bash)3.018 E F0 .518 +(attempts to read)3.018 F F4(/etc/hosts)4.683 E F0 .517 +(to obtain the list of possible host-)4.683 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 .555(Internal F)3.635 F .555 +(ield Separ)-.45 F(ator)-.15 E F0 .555(that is used for w)3.785 F .556 +(ord splitting after e)-.1 F .556(xpansion and to split lines into)-.15 +F -.1(wo)144 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 -(`')-.25 E('.)-.74 E F1(IGNOREEOF)108 540 Q -F0 .503(Controls the action of an interacti)144 552 R .803 -.15(ve s) --.25 H .503(hell on receipt of an).15 F F2(EOF)3.003 E F0 .503 -(character as the sole input.)2.753 F .504(If set,)5.504 F .426(the v) -144 564 R .426(alue is the number of consecuti)-.25 F -.15(ve)-.25 G F2 +(`')-.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 .503(If set,)5.503 F .426(the v) +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 576 R F1(bash)2.802 E F0 -.15(ex)2.802 G +(characters which must be typed as the \214rst characters)2.676 F .303 +(on an input line before)144 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 588 Q(alue, the def) +(umeric v).15 F .302(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 -F2(EOF)2.5 E F0(signi\214es the end of input to the shell.)2.25 E F1 -(INPUTRC)108 600 Q F0 1.436(The \214lename for the)144 612 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.435(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 F4(~/.inputr)5.602 E(c) --.37 E F0(\(see)5.601 E F2(READLINE)3.935 E F0(belo)144 624 Q(w\).)-.25 -E F1(LANG)108 636 Q F0 1.239(Used to determine the locale cate)144 636 R -1.239(gory for an)-.15 F 3.739(yc)-.15 G(ate)-3.739 E 1.24 -(gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E -(starting with)144 648 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 660 Q F0 .974 -(This v)144 672 R .974(ariable o)-.25 F -.15(ve)-.15 G .974 -(rrides the v).15 F .973(alue of)-.25 F F2(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 684 Q(.)-.65 E F1 -(LC_COLLA)108 696 Q(TE)-.95 E F0 .411(This v)144 708 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 720 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(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(16)193.45 E 0 Cg EP +-.37 E F0(\(see)5.602 E F1(READLINE)3.936 E F0(belo)144 672 Q(w\).)-.25 +E F3(INSIDE_EMA)108 684 Q(CS)-.55 E F0 .887(If this v)144 696 R .887 +(ariable appears in the en)-.25 F .886(vironment when the shell starts,) +-.4 F F3(bash)3.386 E F0 .886(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 August 7)145.395 +E(16)194.555 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(within pathname e) -144 84 Q(xpansion and pattern matching.)-.15 E/F1 10/Times-Bold@0 SF -(LC_CTYPE)108 96 Q F0 1.935(This v)144 108 R 1.936 +(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.239(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.24 +(gory not speci\214cally selected with a v)-.15 F(ariable)-.25 E +(starting with)144 96 Q F1(LC_)2.5 E F0(.)A F1(LC_ALL)108 108 Q F0 .974 +(This v)144 120 R .974(ariable o)-.25 F -.15(ve)-.15 G .974 +(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 .973(riable specifying a locale cate-).25 F(gory)144 132 +Q(.)-.65 E F1(LC_COLLA)108 144 Q(TE)-.95 E F0 .411(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.465(and determines the beha)144 +168 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 180 Q(xpansion and pattern matching.)-.15 E F1 +(LC_CTYPE)108 192 Q F0 1.935(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 120 Q -(xpansion and pattern matching.)-.15 E F1(LC_MESSA)108 132 Q(GES)-.55 E -F0(This v)144 144 Q(ariable determines the locale used to translate dou\ +1.936(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 156 Q F0(This v)144 168 Q(ariable determines the locale cate)-.25 E -(gory used for number formatting.)-.15 E F1(LC_TIME)108 180 Q F0(This v) -144 192 Q(ariable determines the locale cate)-.25 E -(gory used for data and time formatting.)-.15 E F1(LINES)108 204 Q F0 -.055(Used by the)144 204 R F1(select)2.555 E F0 .054(compound command t\ +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 +.055(Used by the)144 300 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 216 R F1(checkwinsize)2.764 E F0 .264 +(Automatically set if the)144 312 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/F2 9/Times-Bold@0 SF(SIGWINCH)144 228 Q/F3 -9/Times-Roman@0 SF(.)A F1(MAIL)108 240 Q F0 1.201 -(If this parameter is set to a \214le or directory name and the)144 240 +(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.201 (riable is not set,).25 F F1(bash)3.701 E F0 -(informs the user of the arri)144 252 Q -.25(va)-.25 G 2.5(lo).25 G 2.5 +(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 264 Q F0 .098 -(Speci\214es ho)144 276 R 2.598(wo)-.25 G .098(ften \(in seconds\)) +(-format directory)-.2 E(.)-.65 E F1(MAILCHECK)108 360 Q F0 .098 +(Speci\214es ho)144 372 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 (to check for mail, the shell does so before displaying the primary pro\ -mpt.)144 288 R .223(If this v)5.223 F .223(ariable is unset,)-.25 F -(or set to a v)144 300 Q(alue that is not a number greater than or equa\ -l to zero, the shell disables mail checking.)-.25 E F1(MAILP)108 312 Q --.95(AT)-.74 G(H).95 E F0 2.99(Ac)144 324 S .49 +mpt.)144 384 R .223(If this v)5.223 F .223(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 336 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 348 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 360 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 372 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 384 Q -(ar/mail/)-.25 E F1($USER)A F0(\).)A F1(OPTERR)108 396 Q F0 .39 -(If set to the v)144 408 R .39(alue 1,)-.25 F F1(bash)2.89 E F0 .389 +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 .39 +(If set to the v)144 504 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 .359(SHELL B)144 420 R +-.2(bu)2.889 G .389(iltin command \(see).2 F F2 .359(SHELL B)144 516 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 432 Q --.15(xe)-.15 G(cuted.).15 E F1 -.74(PA)108 444 S(TH)-.21 E F0 .588 -(The search path for commands.)144 444 R .587 +2.609 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 .588 +(The search path for commands.)144 540 R .587 (It is a colon-separated list of directories in which the shell looks) -5.588 F .471(for commands \(see)144 456 R F2 .471(COMMAND EXECUTION) +5.588 F .471(for commands \(see)144 552 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 468 S +(zero-length \(null\) directory name in the)2.972 F -.25(va)144 564 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 480 R .868 +-3.035 E .867(colons, or as an initial or trailing colon.)144 576 R .868 (The def)5.868 F .868(ault path is system-dependent, and is set by the) --.1 F(administrator who installs)144 492 Q F1(bash)2.5 E F0 5(.A)C +-.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 504 Q -F0(.)A F1(POSIXL)108 516 Q(Y_CORRECT)-.92 E F0 .471(If this v)144 528 R +(/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 .471(If this v)144 624 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/F5 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 540 R F1(\255\255posix)2.511 E F0 +(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 552 Q F1(bash)2.5 -E F0(enables)2.5 E F5(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 F4(set -o posix)2.5 E F0(had been e)2.5 E -.15 -(xe)-.15 G(cuted.).15 E F1(PR)108 564 Q(OMPT_COMMAND)-.3 E F0 -(If set, the v)144 576 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.497 E F0(enables)4.497 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.998(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 588 Q(OMPT_DIR)-.3 E(TRIM)-.4 E F0 .676 -(If set to a number greater than zero, the v)144 600 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 612 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 624 Q -.15(ve)-.15 G 2.5(da).15 G -(re replaced with an ellipsis.)-2.5 E F1(PS0)108 636 Q F0 1.174(The v) -144 636 R 1.174(alue of this parameter is e)-.25 F 1.174(xpanded \(see) --.15 F F2(PR)3.674 E(OMPTING)-.27 E F0(belo)3.424 E 1.174 -(w\) and displayed by interacti)-.25 F -.15(ve)-.25 G -(shells after reading a command and before the command is e)144 648 Q --.15(xe)-.15 G(cuted.).15 E F1(PS1)108 660 Q F0 .065(The v)144 660 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 672 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 684 Q F0 .117(The v)144 684 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 696 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G -(.).74 E F1(PS3)108 708 Q F0 1.116(The v)144 708 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 720 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(17)193.45 E 0 Cg EP +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(17)194.555 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(PS4)108 84 Q F0 .1(The v)144 84 R .1(alue of this parameter is e)-.25 -F .1(xpanded as with)-.15 F/F2 9/Times-Bold@0 SF(PS1)2.6 E F0 .101 -(and the v)2.35 F .101(alue is printed before each command)-.25 F F1 -(bash)144 96 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 108 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 120 Q F0 .663(The full pathname to the shell is k)144 132 -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 144 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 156 Q(T)-.95 E F0 -.827(The v)144 168 R .826 +(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 108 Q +-.15(xe)-.15 G(cuted.).15 E F1(PS1)108 120 Q F0 .064(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 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 144 Q F0 .118(The v)144 144 R .118 +(alue of this parameter is e)-.25 F .118(xpanded as with)-.15 F F2(PS1) +2.617 E F0 .117(and used as the secondary prompt string.)2.367 F(The) +5.117 E(def)144 156 Q(ault is `)-.1 E(`)-.74 E F1(>)A F0 -.74('')2.5 G +(.).74 E F1(PS3)108 168 Q F0 1.115(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.116(command \(see)3.616 F F2 1.116(SHELL GRAM-)3.616 F(MAR) +144 180 Q F0(abo)2.25 E -.15(ve)-.15 G(\).).15 E F1(PS4)108 192 Q F0 +.101(The v)144 192 R .101(alue of this parameter is e)-.25 F .101 +(xpanded as with)-.15 F F2(PS1)2.6 E F0 .1(and the v)2.35 F .1 +(alue is printed before each command)-.25 F F1(bash)144 204 Q F0 .334 +(displays during an e)2.834 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.835 E F0 .335(is repli-)2.585 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 .664(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 .663(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 .826 +(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 180 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 192 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 204 Q -(ws; the braces denote optional portions.)-.25 E F1(%%)144 222 Q F0 2.5 -(Al)194 222 S(iteral)-2.5 E F1(%)2.5 E F0(.)A F1(%[)144 234 Q/F3 10 +3.327(wt)-.25 G .827(he timing information for)-3.327 F .649 +(pipelines pre\214x)144 288 R .649(ed with the)-.15 F F1(time)3.149 E F0 +(reserv)3.149 E .649(ed w)-.15 F .648(ord should be displayed.)-.1 F +(The)5.648 E F1(%)3.148 E F0 .648(character introduces)3.148 F .711 +(an escape sequence that is e)144 300 R .711(xpanded to a time v)-.15 F +.712(alue or other information.)-.25 F .712(The escape sequences)5.712 F +(and their meanings are as follo)144 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 -234 Q F1(%[)144 246 Q F3(p)A F1(][l]U)A F0 -(The number of CPU seconds spent in user mode.)194 246 Q F1(%[)144 258 Q +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 -258 Q F1(%P)144 270 Q F0 -(The CPU percentage, computed as \(%U + %S\) / %R.)194 270 Q .87 -(The optional)144 286.8 R F3(p)3.37 E F0 .87(is a digit specifying the) +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 298.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 310.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 -F3(p)3.038 E F0 .538(is not speci\214ed,)3.038 F(the v)144 322.8 Q -(alue 3 is used.)-.25 E .668(The optional)144 339.6 R F1(l)3.168 E F0 +(he number of fractional digits after a decimal)-3.37 F 2.525(point. A) +144 406.8 R -.25(va)2.525 G .025 +(lue of 0 causes no decimal point or fraction to be output.).25 F .026 +(At most three places after the)5.025 F .538 +(decimal point may be speci\214ed; v)144 418.8 R .538(alues of)-.25 F F3 +(p)3.038 E F0 .537(greater than 3 are changed to 3.)3.037 F(If)5.537 E +F3(p)3.037 E F0 .537(is not speci\214ed,)3.037 F(the v)144 430.8 Q +(alue 3 is used.)-.25 E .667(The optional)144 447.6 R F1(l)3.167 E F0 .668(speci\214es a longer format, including minutes, of the form)3.168 F -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 351.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 368.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 380.4 Q(eal\\t%3lR\\nuser\\t%3lU\\nsys\\t%3lS\010)-.18 E F0 7.113 +F3(MM)3.168 E F0(m)A F3(SS)A F0(.)A F3(FF)A F0 3.168(s. The)B -.25(va) +3.168 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.365 +(If this v)144 476.4 R 13.365(ariable is not set,)-.25 F F1(bash)15.865 +E F0 13.364(acts as if it had the v)15.865 F(alue)-.25 E F1($\010\\nr) +144 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 -392.4 R(trailing ne)2.5 E +500.4 R(trailing ne)2.5 E (wline is added when the format string is displayed.)-.25 E F1(TMOUT)108 -404.4 Q F0 .941(If set to a v)144 416.4 R .941(alue greater than zero,) +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 428.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 440.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 452.4 +G(iltin.).2 E(The)144 536.4 Q F1(select)2.81 E F0 .31 +(command terminates if input does not arri)2.81 F .611 -.15(ve a)-.25 H +(fter).15 E F2(TMOUT)2.811 E F0 .311(seconds when input is com-)2.561 F +.886(ing from a terminal.)144 548.4 R .886(In an interacti)5.886 F 1.185 +-.15(ve s)-.25 H .885(hell, the v).15 F .885 +(alue is interpreted as the number of seconds to)-.25 F -.1(wa)144 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 464.4 -Q -.15(ve)-.25 G(.).15 E F1(TMPDIR)108 476.4 Q F0 .39(If set,)144 488.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 500.4 Q 2.5(su) --.55 G(se.)-2.5 E F1(auto_r)108 512.4 Q(esume)-.18 E F0 .531(This v)144 -524.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 536.4 R +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 .391(If set,)144 596.4 +R F1(bash)2.891 E F0 .391(uses its v)2.891 F .391 +(alue as the name of a directory in which)-.25 F F1(bash)2.89 E F0 .39 +(creates temporary \214les for the)2.89 F(shell')144 608.4 Q 2.5(su)-.55 +G(se.)-2.5 E F1(auto_r)108 620.4 Q(esume)-.18 E F0 .53(This v)144 632.4 +R .53(ariable controls ho)-.25 F 3.03(wt)-.25 G .531 +(he shell interacts with the user and job control.)-3.03 F .531 +(If this v)5.531 F .531(ariable is set,)-.25 F .539(single w)144 644.4 R .538(ord simple commands without redirections are treated as candidates\ - for resumption of an)-.1 F -.15(ex)144 548.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 -560.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 572.4 Q 1.133 + for resumption of an)-.1 F -.15(ex)144 656.4 S .366(isting stopped job) +.15 F 5.366(.T)-.4 G .366(here is no ambiguity allo)-5.366 F .366 +(wed; if there is more than one job be)-.25 F .367(ginning with)-.15 F +1.125(the string typed, the job most recently accessed is selected.)144 +668.4 R(The)6.125 E F3(name)3.985 E F0 1.124(of a stopped job, in this) +3.805 F(conte)144 680.4 Q 1.132 (xt, is the command line used to start it.)-.15 F 1.133(If set to the v) -6.133 F(alue)-.25 E 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 584.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 596.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 608.4 Q F1(%?)3.333 E -F0 .833(job identi\214er \(see)5.833 F F2 .834(JOB CONTR)3.334 F(OL)-.27 +6.133 F(alue)-.25 E F3 -.2(ex)3.633 G(act).2 E F0 3.633(,t).68 G 1.133 +(he string supplied must)-3.633 F .625 +(match the name of a stopped job e)144 692.4 R .624(xactly; if set to) +-.15 F F3(substring)3.124 E F0 3.124(,t).22 G .624 +(he string supplied needs to match a)-3.124 F .884 +(substring of the name of a stopped job)144 704.4 R 5.884(.T)-.4 G(he) +-5.884 E F3(substring)3.724 E F0 -.25(va)3.604 G .885(lue pro).25 F .885 +(vides functionality analogous to)-.15 F(the)144 716.4 Q F1(%?)3.334 E +F0 .834(job identi\214er \(see)5.834 F F2 .834(JOB CONTR)3.334 F(OL)-.27 E F0(belo)3.084 E 3.334(w\). If)-.25 F .834(set to an)3.334 F 3.334(yo) --.15 G .834(ther v)-3.334 F .834(alue, the supplied string)-.25 F .316 -(must be a pre\214x of a stopped job')144 620.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 632.4 Q(.)-.55 -E F1(histchars)108 644.4 Q F0 2.069(The tw)144 656.4 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 668.4 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 680.4 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 692.4 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 704.4 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 716.4 R(-)-.2 E 1.293(acter of a w)144 728.4 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 -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(18)193.45 E 0 Cg EP +-.15 G .834(ther v)-3.334 F .833(alue, the supplied string)-.25 F .315 +(must be a pre\214x of a stopped job')144 728.4 R 2.816(sn)-.55 G .316 +(ame; this pro)-2.816 F .316(vides functionality analogous to the)-.15 F +F1(%)2.816 E F3(string)A F0(job)2.816 E(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(18)194.555 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 .38 -(skipped for the remaining w)144 84 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 96 Q/F1 10/Times-Bold@0 SF -(Arrays)87 112.8 Q(Bash)108 124.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 136.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 -148.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 160.8 R 1.595 -(gers \(including arithmetic e)-.15 F 1.595 +(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.07(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.569 E(OR) +-.162 E(Y)-.315 E(EXP)144 120 Q(ANSION)-.666 E F0(belo)3.465 E 3.715 +(w\). The)-.25 F 1.215(\214rst character is the)3.715 F/F3 10 +/Times-Italic@0 SF 1.216(history e)3.715 F(xpansion)-.2 E F0(character) +3.716 E 3.716(,t)-.4 G 1.216(he character which)-3.716 F .798 +(signals the start of a history e)144 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.739 E 2.739(,w)-.4 G .239 +(hich is used as shorthand for re-running the pre)-2.739 F .24 +(vious command entered, substitut-)-.25 F .576 +(ing one string for another in the command.)144 156 R .575(The def)5.575 +F .575(ault is `)-.1 F F1(^)A F0 3.075('. The)B .575 +(optional third character is the)3.075 F .223(character which indicates\ + that the remainder of the line is a comment when found as the \214rst \ +char)144 168 R(-)-.2 E 1.294(acter of a w)144 180 R 1.294 +(ord, normally `)-.1 F F1(#)A F0 3.794('. The)B 1.293 +(history comment character causes history substitution to be)3.794 F +.379(skipped for the remaining w)144 192 R .379(ords on the line.)-.1 F +.38(It does not necessarily cause the shell parser to treat)5.379 F +(the rest of the line as a comment.)144 204 Q F1(Arrays)87 220.8 Q(Bash) +108 232.8 Q F0(pro)3.391 E .891(vides one-dimensional inde)-.15 F -.15 +(xe)-.15 G 3.391(da).15 G .891(nd associati)-3.391 F 1.191 -.15(ve a) +-.25 H .891(rray v).15 F 3.391(ariables. An)-.25 F 3.391(yv)-.15 G .89 +(ariable may be used as an)-3.641 F(inde)108 244.8 Q -.15(xe)-.15 G +2.573(da).15 G .073(rray; the)-2.573 F F1(declar)2.573 E(e)-.18 E F0 -.2 +(bu)2.573 G .073(iltin will e).2 F .073(xplicitly declare an array)-.15 +F 5.073(.T)-.65 G .074(here is no maximum limit on the size of)-5.073 F +.329(an array)108 256.8 R 2.829(,n)-.65 G .329(or an)-2.829 F 2.829(yr) +-.15 G .329(equirement that members be inde)-2.829 F -.15(xe)-.15 G +2.829(do).15 G 2.829(ra)-2.829 G .328(ssigned contiguously)-2.829 F +5.328(.I)-.65 G(nde)-5.328 E -.15(xe)-.15 G 2.828(da).15 G .328 +(rrays are refer)-2.828 F(-)-.2 E 1.595(enced using inte)108 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 -172.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 189.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 -/F2 10/Times-Italic@0 SF(name)4.963 E F0([)A F2(sub-)A(script)108 201.6 -Q F0(]=)A F2(value)A F0 6.549(.T)C(he)-6.549 E F2(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 213.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 F2(name)4.48 E F0(\(see)4.48 E -/F3 9/Times-Bold@0 SF 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 225.6 Q 2.5<65ad>-.18 G -(a)-2.5 E F2(name)2.5 E F1([)A F2(subscript)A F1(])A F0 -(is also accepted; the)2.5 E F2(subscript)2.5 E F0(is ignored.)2.5 E -(Associati)108 242.4 Q .3 -.15(ve a)-.25 H(rrays are created using).15 E -F1(declar)2.5 E 2.5<65ad>-.18 G(A)-2.5 E F2(name)2.5 E F0(.)A(Attrib)108 -259.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 271.2 Q -(.)-.65 E 1.647 -(Arrays are assigned to using compound assignments of the form)108 288 R -F2(name)4.147 E F0(=)A F1(\()A F0 -.25(va)C(lue).25 E F2(1)A F0 1.647 -(... v)4.147 F(alue)-.25 E F2(n)A F1(\))A F0 4.148(,w)C 1.648(here each) --4.148 F F2(value)108 300 Q F0 1.833(is of the form [)4.333 F F2 -(subscript)A F0(]=)A F2(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 F2(string)4.332 E F0(.)A .163 -(When assigning to inde)108 312 R -.15(xe)-.15 G 2.663(da).15 G .163 +(ve i)-.25 H(nte).15 E(gers.)-.15 E 2.463(An inde)108 297.6 R -.15(xe) +-.15 G 4.963(da).15 G 2.463(rray is created automatically if an)-4.963 F +4.963(yv)-.15 G 2.462(ariable is assigned to using the syntax)-5.213 F +F3(name)4.962 E F0([)A F3(sub-)A(script)108 309.6 Q F0(]=)A F3(value)A +F0 6.548(.T)C(he)-6.548 E F3(subscript)4.388 E F0 1.549 +(is treated as an arithmetic e)4.728 F 1.549(xpression that must e)-.15 +F -.25(va)-.25 G 1.549(luate to a number).25 F 6.549(.T)-.55 G(o)-7.349 +E -.15(ex)108 321.6 S 1.98(plicitly declare an inde).15 F -.15(xe)-.15 G +4.48(da).15 G(rray)-4.48 E 4.48(,u)-.65 G(se)-4.48 E F1(declar)4.48 E +4.48<65ad>-.18 G(a)-4.48 E F3(name)4.48 E F0(\(see)4.48 E F2 1.979 +(SHELL B)4.479 F(UIL)-.09 E 1.979(TIN COMMANDS)-.828 F F0(belo)4.229 E +(w\).)-.25 E F1(declar)108 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 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 367.2 Q .94 +(utes may be speci\214ed for an array v)-.2 F .941(ariable using the) +-.25 F F1(declar)3.441 E(e)-.18 E F0(and)3.441 E F1 -.18(re)3.441 G +(adonly).18 E F0 -.2(bu)3.441 G 3.441(iltins. Each).2 F(attrib)3.441 E +(ute)-.2 E(applies to all members of an array)108 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.147(,w)C 1.647(here each) +-4.147 F F3(value)108 408 Q F0 1.833(is of the form [)4.332 F F3 +(subscript)A F0(]=)A F3(string)A F0 6.833(.I)C(nde)-6.833 E -.15(xe)-.15 +G 4.333(da).15 G 1.833(rray assignments do not require an)-4.333 F 1.833 +(ything b)-.15 F(ut)-.2 E F3(string)4.333 E F0(.)A .164 +(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 324 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 336 Q -(xing starts at zero.)-.15 E(When assigning to an associati)108 352.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 369.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 F2(name)108 -381.6 Q F0([)A F2(subscript)A F0(]=)A F2(value)A F0 1.917 -(syntax introduced abo)4.417 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 +(ets and subscript are supplied, that inde)-.1 F 2.663(xi)-.15 G 2.663 +(sa)-2.663 G(ssigned)-2.663 E 1.41(to; otherwise the inde)108 432 R 3.91 +(xo)-.15 G 3.91(ft)-3.91 G 1.41(he element assigned is the last inde) +-3.91 F 3.911(xa)-.15 G 1.411(ssigned to by the statement plus one.) +-3.911 F(Inde)108 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 .24 +(This syntax is also accepted by the)108 477.6 R F1(declar)2.74 E(e)-.18 +E F0 -.2(bu)2.739 G 2.739(iltin. Indi).2 F .239 +(vidual array elements may be assigned to using the)-.25 F F3(name)108 +489.6 Q F0([)A F3(subscript)A F0(]=)A F3(value)A F0 1.917 +(syntax introduced abo)4.416 F -.15(ve)-.15 G 6.917(.W).15 G 1.917 (hen assigning to an inde)-6.917 F -.15(xe)-.15 G 4.417(da).15 G(rray) --4.417 E 4.417(,i)-.65 G(f)-4.417 E F2(name)4.777 E F0 1.916(is sub-) -4.597 F .115(scripted by a ne)108 393.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 -(of)108 405.6 Q F2(name)3.338 E F0 3.338(,s)C 3.338(on)-3.338 G -2.25 +-4.417 E 4.417(,i)-.65 G(f)-4.417 E F3(name)4.777 E F0 1.917(is sub-) +4.597 F .116(scripted by a ne)108 501.6 R -.05(ga)-.15 G(ti).05 E .416 +-.15(ve n)-.25 H(umber).15 E 2.616(,t)-.4 G .115 +(hat number is interpreted as relati)-2.616 F .415 -.15(ve t)-.25 H +2.615(oo).15 G .115(ne greater than the maximum inde)-2.615 F(x)-.15 E +(of)108 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 417.6 Q(An)108 434.4 Q -3.575(ye)-.15 G 1.075(lement of an array may be referenced using ${) --3.575 F F2(name)A F0([)A F2(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 446.4 R 4.041(xpansion. If)-.15 F F2 +G .838(eferences the last)-3.338 F(element.)108 525.6 Q(An)108 542.4 Q +3.576(ye)-.15 G 1.076(lement of an array may be referenced using ${) +-3.576 F F3(name)A F0([)A F3(subscript)A F0 3.575(]}. The)B 1.075 +(braces are required to a)3.575 F -.2(vo)-.2 G(id).2 E 1.541 +(con\215icts with pathname e)108 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 F2(name)4.041 E F0(.)A 1.056 -(These subscripts dif)108 458.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 470.4 Q F2(name)A F0 .521([*]} e)B -.521(xpands to a single w)-.15 F .521(ord with the v)-.1 F .52 +(xpands to all members of)-.15 F F3(name)4.042 E F0(.)A 1.057 +(These subscripts dif)108 566.4 R 1.057(fer only when the w)-.25 F 1.057 +(ord appears within double quotes.)-.1 F 1.056(If the w)6.056 F 1.056 +(ord is double-quoted,)-.1 F(${)108 578.4 Q F3(name)A F0 .52([*]} e)B +.52(xpands to a single w)-.15 F .52(ord with the v)-.1 F .521 (alue of each array member separated by the \214rst character)-.25 F -1.374(of the)108 482.4 R F3(IFS)3.874 E F0 1.374(special v)3.624 F 1.375 -(ariable, and ${)-.25 F F2(name)A F0 1.375([@]} e)B 1.375 -(xpands each element of)-.15 F F2(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 -494.4 R F2(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 506.4 R .759(ord, the e)-.1 F .759 +1.375(of the)108 590.4 R F2(IFS)3.875 E F0 1.375(special v)3.625 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.374(to a separate w) +3.875 F 3.874(ord. When)-.1 F 2.027(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.028(If the double-quoted e)7.028 F 2.028(xpansion occurs)-.15 F .759 +(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 -518.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 530.4 R .228(xpansion of the special parameters)-.15 +(ginning part of the original w)-.15 F(ord,)-.1 E .515(and the e)108 +626.4 R .516(xpansion of the last parameter is joined with the last par\ +t of the original w)-.15 F 3.016(ord. This)-.1 F .516(is analogous)3.016 +F .228(to the e)108 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 F2(name)A F0([)A F2(subscript)A F0(]})A -.15(ex)108 542.4 -S .886(pands to the length of ${).15 F F2(name)A F0([)A F2(subscript)A -F0 3.386(]}. If)B F2(subscript)3.386 E F0(is)3.386 E F1(*)3.386 E F0(or) +(Special P)2.728 F(arameters)-.1 E F0(abo)2.727 E -.15(ve)-.15 G 2.727 +(\). ${#).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 554.4 -R 5.294(.I)-.65 G 2.794(ft)-5.294 G(he)-2.794 E F2(subscript)3.135 E F0 +(xpansion is the number of ele-)-.15 F .295(ments in the array)108 662.4 +R 5.295(.I)-.65 G 2.795(ft)-5.295 G(he)-2.795 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 566.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 578.4 Q 2.5(,a)-.65 G +2.794(da).15 G .294(rray e)-2.794 F -.25(va)-.25 G .294 +(luates to a number).25 F .628 +(less than zero, it is interpreted as relati)108 674.4 R .928 -.15(ve t) +-.25 H 3.128(oo).15 G .629(ne greater than the maximum inde)-3.128 F +3.129(xo)-.15 G 3.129(ft)-3.129 G .629(he array)-3.129 F 3.129(,s)-.65 G +3.129(on)-3.129 G -2.25 -.15(eg a)-3.129 H(ti).15 E -.15(ve)-.25 G +(indices count back from the end of the array)108 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 -595.2 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 607.2 R 2.5(yr)-.15 G(eference to a v)-2.5 E(ariable using a v)-.25 +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(An array v)108 624 Q -(ariable is considered set if a subscript has been assigned a v)-.25 E +F0(will create an array if necessary)2.5 E(.)-.65 E(GNU Bash 5.0)72 768 +Q(2018 August 7)145.395 E(19)194.555 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 640.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 F1(!)A F2(name)A F0([)A F2(@)A F0 .417(]} and ${)B F1 -(!)A F2(name)A F0([)A F2(*)A F0(]})A -.15(ex)108 652.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 +.417(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.918 +(alues. ${)-.25 F/F1 10/Times-Bold@0 SF(!)A/F2 10/Times-Italic@0 SF +(name)A F0([)A F2(@)A F0 .418(]} and ${)B F1(!)A F2(name)A F0([)A F2(*)A +F0(]})A -.15(ex)108 112.8 S .75(pand to the indices assigned in array v) +.15 F(ariable)-.25 E F2(name)3.249 E F0 5.749(.T)C .749 (he treatment when in double quotes is similar to)-5.749 F(the e)108 -664.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 681.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 +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.766 E F0 -.2(bu)2.766 G .267(iltin is used to destro).2 F 2.767(ya)-.1 G(rrays.)-2.767 E 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 F2(sub-)2.766 E(script)108 693.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) +-.15 E F2(sub-)2.767 E(script)108 153.6 Q F0 3.975(,f)C 1.475 +(or both inde)-3.975 F -.15(xe)-.15 G 3.975(da).15 G 1.474(nd associati) +-3.975 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 705.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 717.6 Q F2(name)2.5 E F0(is an array)2.5 +G 3.974(da).15 G 1.474(rrays are interpreted as)-3.974 F .614 +(described abo)108 165.6 R -.15(ve)-.15 G 5.614(.U).15 G .614 +(nsetting the last element of an array v)-5.614 F .615 +(ariable does not unset the v)-.25 F(ariable.)-.25 E F1(unset)5.615 E F2 +(name)3.115 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(GNU Bash 5.0)72 768 Q(2018 March 15) -144.29 E(19)193.45 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 .847 -(When using a v)108 84 R .848(ariable name with a subscript as an ar) --.25 F .848(gument to a command, such as with)-.18 F/F1 10/Times-Bold@0 -SF(unset)3.348 E F0 3.348(,w)C(ithout)-3.348 E .345(using the w)108 96 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 108 Q(xpansion is not desired, the ar)-.15 E -(gument should be quoted.)-.18 E(The)108 124.8 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 -F13.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 F13.574 E F0 .339 -(option to specify an associati)108 136.8 R .638 -.15(ve a)-.25 H(rray) +(he entire array)-2.5 E(.)-.65 E .848(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.347 E F0 3.347(,w)C +(ithout)-3.347 E .344(using the w)108 206.4 R .344(ord e)-.1 F .344 +(xpansion syntax described abo)-.15 F -.15(ve)-.15 G 2.845(,t).15 G .345 +(he ar)-2.845 F .345(gument is subject to pathname e)-.18 F 2.845 +(xpansion. If)-.15 F(path-)2.845 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.574 E(e)-.18 E F0(,)A F1(local)3.574 E F0 +3.574(,a)C(nd)-3.574 E F1 -.18(re)3.574 G(adonly).18 E F0 -.2(bu)3.574 G +1.073(iltins each accept a).2 F F13.573 E F0 1.073 +(option to specify an inde)3.573 F -.15(xe)-.15 G 3.573(da).15 G 1.073 +(rray and a)-3.573 F F13.573 E F0 .338 +(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 F12.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 148.8 R F12.941 E F0 .441 +5.338 E F1 -.18(re)2.839 G(ad).18 E F0 -.2(bu)2.839 G(iltin).2 E .441 +(accepts a)108 259.2 R F12.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 F1(set)2.941 E F0(and)2.941 E F1(declar)2.941 E(e)-.18 E F0 -.2 -(bu)108 160.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/F2 10.95 -/Times-Bold@0 SF(EXP)72 177.6 Q(ANSION)-.81 E F0 .76(Expansion is perfo\ -rmed on the command line after it has been split into w)108 189.6 R 3.26 +-5.441 E F1(set)2.941 E F0(and)2.941 E F1(declar)2.94 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 201.6 S .369(pansion performed:).15 F/F3 10 -/Times-Italic@0 SF(br)2.869 E .369(ace e)-.15 F(xpansion)-.2 E F0(,).24 -E F3 .369(tilde e)2.869 F(xpansion)-.2 E F0(,).24 E F3(par)2.869 E .369 -(ameter and variable e)-.15 F(xpansion)-.2 E F0(,).24 E F3 .37 -(command sub-)2.869 F(stitution)108 213.6 Q F0(,).24 E F3(arithmetic e) -2.5 E(xpansion)-.2 E F0(,).24 E F3(wor)2.5 E 2.5(ds)-.37 G(plitting)-2.5 -E F0 2.5(,a).22 G(nd)-2.5 E F3(pathname e)2.5 E(xpansion)-.2 E F0(.).24 -E .419(The order of e)108 230.4 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 242.4 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 254.4 Q .257 -(On systems that can support it, there is an additional e)108 271.2 R -.257(xpansion a)-.15 F -.25(va)-.2 G(ilable:).25 E F3(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 283.2 Q 2.5(,v)-.4 G +(inds of)-3.26 F -.15(ex)108 312 S .37(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 .369 +(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 +.418(The order of e)108 340.8 R .418(xpansions is: brace e)-.15 F .418 +(xpansion; tilde e)-.15 F .419(xpansion, parameter and v)-.15 F .419 +(ariable e)-.25 F .419(xpansion, arithmetic)-.15 F -.15(ex)108 352.8 S +.196(pansion, and command substitution \(done in a left-to-right f).15 F +.195(ashion\); w)-.1 F .195(ord splitting; and pathname e)-.1 F(xpan-) +-.15 E(sion.)108 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 .257(his is per)-5.257 F(-)-.2 +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 300 R .003 +-.15 E .003(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 312 Q .3 -.15(ve b)-.2 H -(een quoted themselv).15 E(es \()-.15 E F3(quote r)A(emo)-.37 E(val)-.1 -E F0(\).)A 1.191(Only brace e)108 328.8 R 1.191(xpansion, w)-.15 F 1.191 +-.15 F .002(ord are remo)-.1 F -.15(ve)-.15 G 2.502(du).15 G .002 +(nless the)-2.502 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.19(Only brace e)108 439.2 R 1.19(xpansion, w)-.15 F 1.19 (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 340.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 -(ord. The)-.1 F 1.165(only e)3.665 F 1.165(xceptions to this are the) --.15 F -.15(ex)108 352.8 S 1.245(pansions of ").15 F F1($@)A F0 3.745 -("a)C 1.245(nd ")-3.745 F F1(${)A F3(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 F3 -(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 364.8 S -(RAMETERS).666 E/F5 9/Times-Roman@0 SF(\).)A F1(Brace Expansion)87 381.6 -Q F3(Br)108.58 393.6 Q .606(ace e)-.15 F(xpansion)-.2 E F0 .606 +(xpansion can increase the number of w)-.15 F 1.191(ords of the)-.1 F +-.15(ex)108 451.2 S 1.165(pansion; other e).15 F 1.165(xpansions e)-.15 +F 1.165(xpand a single w)-.15 F 1.165(ord to a single w)-.1 F 3.665 +(ord. The)-.1 F 1.164(only e)3.665 F 1.164(xceptions to this are the) +-.15 F -.15(ex)108 463.2 S 1.244(pansions of ").15 F F1($@)A F0 3.744 +("a)C 1.244(nd ")-3.744 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.745 E F2 +(name)A F1([*]})A F0 1.245(as e)3.745 F 1.245(xplained abo)-.15 F 1.545 +-.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 405.6 Q F3 .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 .151(form of an optional)108 417.6 R F3(pr)2.651 E(eamble) +(he)-2.915 E .152(form of an optional)108 528 R F2(pr)2.652 E(eamble) -.37 E F0 2.651(,f).18 G(ollo)-2.651 E .151 (wed by either a series of comma-separated strings or a sequence e)-.25 -F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 429.6 R -.563(wed by an optional)-.25 F F3(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 441.6 R .659(xpanding left to)-.15 F(right.) -108 453.6 Q .719(Brace e)108 470.4 R .719(xpansions may be nested.)-.15 -F .719(The results of each e)5.719 F .719 +F(xpres-)-.15 E .563(sion between a pair of braces, follo)108 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 .658(xpanding left to)-.15 F(right.)108 +564 Q .718(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 482.4 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 499.2 S .742(equence e)-3.242 F .742(xpression tak)-.15 F .742 -(es the form)-.1 F F1({)3.242 E F3(x)A F1(..)A F3(y)A F1([..)A F3(incr)A -F1(]})A F0 3.242(,w)C(here)-3.242 E F3(x)3.242 E F0(and)3.243 E F3(y) -3.243 E F0 .743(are either inte)3.243 F .743(gers or single characters,) --.15 F(and)108 511.2 Q F3(incr)3.032 E F0 3.032(,a)C 3.032(no)-3.032 G +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.243(As) +108 609.6 S .743(equence e)-3.243 F .743(xpression tak)-.15 F .743 +(es the form)-.1 F F1({)3.243 E F2(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 621.6 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 .531(xpands to each)-.15 F .077(number between)108 -523.2 R F3(x)2.577 E F0(and)2.577 E F3(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 F3(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 535.2 R .015(When either)5.015 F F3(x)2.515 E F0(or) -2.515 E F3(y)2.515 E F0(be)2.515 E .014(gins with a zero, the shell att\ +(xpression e)-.15 F .532(xpands to each)-.15 F .078(number between)108 +633.6 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 645.6 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\ empts to force all generated terms to contain)-.15 F 1.143 -(the same number of digits, zero-padding where necessary)108 547.2 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 559.2 S 1.064(pands to each character le) -.15 F 1.064(xicographically between)-.15 F F3(x)3.564 E F0(and)3.564 E -F3(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 .983 -(that both)108 571.2 R F3(x)3.483 E F0(and)3.483 E F3(y)3.483 E F0 .983 -(must be of the same type.)3.483 F .984 +(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 681.6 R F2(x)3.484 E F0(and)3.484 E F2(y)3.484 E F0 .983 +(must be of the same type.)3.484 F .983 (When the increment is supplied, it is used as the dif)5.983 F(ference) --.25 E(between each term.)108 583.2 Q(The def)5 E -(ault increment is 1 or \2551 as appropriate.)-.1 E .582(Brace e)108 600 -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 .015 -(are preserv)108 612 R .015(ed in the result.)-.15 F .015 -(It is strictly te)5.015 F(xtual.)-.15 E F1(Bash)5.016 E F0 .016 -(does not apply an)2.516 F 2.516(ys)-.15 G .016 -(yntactic interpretation to the con-)-2.516 F(te)108 624 Q(xt of the e) --.15 E(xpansion or the te)-.15 E(xt between the braces.)-.15 E 3.633(Ac) -108 640.8 S 1.133(orrectly-formed brace e)-3.633 F 1.132(xpansion must \ -contain unquoted opening and closing braces, and at least one)-.15 F -3.44(unquoted comma or a v)108 652.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.441(xpansion is left)-.15 F 2.755 -(unchanged. A)108 664.8 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.91 -(sion. T)108 676.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 .411(is not considered eligible for brace e)2.911 F -(xpan-)-.15 E(sion, and inhibits brace e)108 688.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 705.6 R(longer than in the abo)108 717.6 Q .3 --.15(ve ex)-.15 H(ample:).15 E(GNU Bash 5.0)72 768 Q(2018 March 15) -144.29 E(20)193.45 E 0 Cg EP +-.25 E(between each term.)108 693.6 Q(The def)5 E +(ault increment is 1 or \2551 as appropriate.)-.1 E .581(Brace e)108 +710.4 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 1.209 +(are preserv)108 722.4 R 1.209(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.208 +(yntactic interpretation to the)-3.709 F(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(20)194.555 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 -(mkdir /usr/local/src/bash/{old,ne)144 84 Q -.65(w,)-.25 G(dist,b).65 E -(ugs})-.2 E(or)108 96 Q(cho)144 108 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 124.8 R .618 +(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 100.8 S 1.132(orrectly-formed brace e)-3.632 F 1.132 +(xpansion must contain unquoted opening and closing braces, and at leas\ +t one)-.15 F 3.441(unquoted comma or a v)108 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 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.911(sion. T)108 136.8 R 2.911(oa)-.8 G -.2(vo)-3.111 G .411 +(id con\215icts with parameter e).2 F .411(xpansion, the string)-.15 F +F1(${)2.911 E F0 .41(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 10/Times-Bold@0 SF(sh)3.118 E F0(.)A F1(sh) -5.618 E F0 .618(does not treat open-)3.118 F .248 -(ing or closing braces specially when the)108 136.8 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 148.8 Q -.15 +.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 247.2 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 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 10/Times-Italic@0 SF(\214le{1,2})108 160.8 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 172.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 +.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 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 .437 -(xpansion with the)-.15 F F1(+B)108 184.8 Q F0(option to the)2.5 E F1 +(+B)2.936 E F0 .436(option or disable brace e)2.936 F .436 +(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 201.6 S(lde Expansion).18 E F0 1.087(If a w)108 213.6 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 consider\ -ed a)108 225.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 .726(in the tilde-pre\ -\214x are quoted, the characters in the tilde-pre\214x follo)108 237.6 R -.725(wing the tilde are treated as a possible)-.25 F F2(lo)108 249.6 Q -.522(gin name)-.1 F F0 5.522(.I)C 3.022(ft)-5.522 G .522 +87 312 S(lde Expansion).18 E F0 1.086(If a w)108 324 R 1.086(ord be)-.1 +F 1.086(gins with an unquoted tilde character \(`)-.15 F F1(~)A F0 1.087 +('\), all of the characters preceding the \214rst unquoted)B .185(slash\ + \(or all characters, if there is no unquoted slash\) are considered a) +108 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 .725(in the tilde-pre\214x\ + are quoted, the characters in the tilde-pre\214x follo)108 348 R .726 +(wing the tilde are treated as a possible)-.25 F F2(lo)108 360 Q .523 +(gin name)-.1 F F0 5.523(.I)C 3.023(ft)-5.523 G .523 (his login name is the null string, the tilde is replaced with the v) --3.022 F .523(alue of the shell parameter)-.25 F F3(HOME)108 261.6 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\ +-3.023 F .522(alue of the shell parameter)-.25 F F3(HOME)108 372 Q/F4 9 +/Times-Roman@0 SF(.)A F0(If)4.786 E F3(HOME)2.786 E F0 .287 +(is unset, the home directory of the user e)2.536 F -.15(xe)-.15 G .287 +(cuting the shell is substituted instead.).15 F(Other)5.287 E(-)-.2 E(w\ ise, the tilde-pre\214x is replaced with the home directory associated \ -with the speci\214ed login name.)108 273.6 Q .092 -(If the tilde-pre\214x is a `~+', the v)108 290.4 R .092 +with the speci\214ed login name.)108 384 Q .093 +(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 .093(If the tilde-pre\214x is) -5.093 F 3.404(a`)108 302.4 S .904(~\255', the v)-3.404 F .904 +(replaces the tilde-pre\214x.)2.342 F .092(If the tilde-pre\214x is) +5.092 F 3.403(a`)108 412.8 S .903(~\255', the v)-3.403 F .903 (alue of the shell v)-.25 F(ariable)-.25 E F3(OLDPWD)3.404 E F4(,)A F0 -.904(if it is set, is substituted.)3.154 F .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 314.4 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\ +.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 424.8 R F2(N)4.142 +E F0 4.142(,o)C 1.642(ptionally pre\214x)-4.142 F 1.641 +(ed by a `+' or a `\255', the tilde-pre\214x is)-.15 F 1.437(replaced w\ ith the corresponding element from the directory stack, as it w)108 -326.4 R 1.437(ould be displayed by the)-.1 F F1(dirs)3.937 E F0 -.2(bu) -108 338.4 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 +436.8 R 1.438(ould be displayed by the)-.1 F F1(dirs)3.938 E F0 -.2(bu) +108 448.8 S .455(iltin in).2 F -.2(vo)-.4 G -.1(ke).2 G 2.955(dw).1 G +.455(ith the tilde-pre\214x as an ar)-2.955 F 2.954(gument. If)-.18 F +.454(the characters follo)2.954 F .454 (wing the tilde in the tilde-pre\214x)-.25 F (consist of a number without a leading `+' or `\255', `+' is assumed.) -108 350.4 Q(If the login name is in)108 367.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 .167(Each v)108 384 R .167 +(ord is unchanged.)-.1 E .166(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.666 E F0 5.166(.I)C(n)-5.166 E -.467(these cases, tilde e)108 396 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 408 -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 424.8 S(rameter Expansion).1 E F0 1.606(The `)108 436.8 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 448.8 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 460.8 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 -472.8 Q 1.189 -(When braces are used, the matching ending brace is the \214rst `)108 -489.6 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 -501.6 R 2.15(xpansion, command substitution, or parameter)-.15 F -.15 -(ex)108 513.6 S(pansion.).15 E(${)108 530.4 Q F2(par)A(ameter)-.15 E F0 -(})A 1.204(The v)144 542.4 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 554.4 R F2(par)4.014 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 506.4 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 +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 .023(Bash also performs tilde e)108 535.2 R .023 +(xpansion on w)-.15 F .024(ords satisfying the conditions of v)-.1 F +.024(ariable assignments \(as described)-.25 F(abo)108 547.2 Q .77 -.15 +(ve u)-.15 H(nder).15 E F3 -.666(PA)2.97 G(RAMETERS).666 E F4(\))A F0 +.47(when the)2.72 F 2.969(ya)-.15 G .469(ppear as ar)-2.969 F .469 +(guments to simple commands.)-.18 F .469(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.605(The `)108 588 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 600 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 612 R .032(ariable to be e)-.25 F .032 +(xpanded from characters immediately follo)-.15 F .033 +(wing it which could be interpreted as part)-.25 F(of the name.)108 624 +Q 1.19(When braces are used, the matching ending brace is the \214rst `) +108 640.8 R F1(})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 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.205 +(The v)144 693.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 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 566.4 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 578.4 S(RAMETERS).74 E F0 2.5(\)o) +(wed by a character which is not to)-.25 F 2.677 +(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.676(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 .347(If the \214rst character of)108 595.2 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.846(,i)C 2.846(ti)-2.846 G -(ntroduces)-2.846 E 2.634(al)108 607.2 S -2.15 -.25(ev e)-2.634 H 2.634 -(lo).25 G 2.634(fv)-2.634 G .134(ariable indirection.)-2.884 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.635 E(ameter)-.15 E F0 -.135(as the)2.635 F 1.004(name of the v)108 619.2 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 .257 -(rather than the v)108 631.2 R .257(alue of)-.25 F F2(par)2.757 E -(ameter)-.15 E F0 2.757(itself. This)2.757 F .257(is kno)2.757 F .257 -(wn as)-.25 F F2(indir)2.757 E .257(ect e)-.37 F(xpansion)-.2 E F0 5.257 -(.T)C .257(he v)-5.257 F .258(alue is subject to tilde)-.25 F -.15(ex) -108 643.2 S 2.767(pansion, parameter e).15 F 2.766 -(xpansion, command substitution, and arithmetic e)-.15 F 5.266 -(xpansion. If)-.15 F F2(par)5.266 E(ameter)-.15 E F0 2.766(is a)5.266 F -.461(nameref, this e)108 655.2 R .461(xpands to the name of the v)-.15 F -.461(ariable referenced by)-.25 F F2(par)2.961 E(ameter)-.15 E F0 .462 -(instead of performing the com-)2.961 F 2.419(plete indirect e)108 667.2 -R 4.919(xpansion. The)-.15 F -.15(ex)4.919 G 2.418 -(ceptions to this are the e).15 F 2.418(xpansions of ${)-.15 F F1(!)A F2 -(pr)A(e\214x)-.37 E F1(*)A F0 4.918(}a)C 2.418(nd ${)-4.918 F F1(!)A F2 -(name)A F0([)A F2(@)A F0(]})A .464(described belo)108 679.2 R 4.264 -.65 -(w. T)-.25 H .464(he e).65 F .464 -(xclamation point must immediately follo)-.15 F 2.965(wt)-.25 G .465 -(he left brace in order to introduce indi-)-2.965 F(rection.)108 691.2 Q -.334(In each of the cases belo)108 708 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 720 Q(xpansion.)-.15 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(21)193.45 E 0 Cg EP +(\).)A(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(21)194.555 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 1.089 -(When not performing substring e)108 84 R 1.089 -(xpansion, using the forms documented belo)-.15 F 3.589(w\()-.25 G -(e.g.,)-3.589 E/F1 10/Times-Bold@0 SF(:-)3.59 E F0(\),)A F1(bash)3.59 E -F0 1.09(tests for a)3.59 F(parameter that is unset or null.)108 96 Q(Om\ -itting the colon results in a test only for a parameter that is unset.)5 -E(${)108 112.8 Q/F2 10/Times-Italic@0 SF(par)A(ameter)-.15 E F1<3aad>A -F2(wor)A(d)-.37 E F0(})A F1 .723(Use Default V)144 124.8 R(alues)-.92 E -F0 5.723(.I)C(f)-5.723 E F2(par)4.473 E(ameter)-.15 E F0 .723 -(is unset or null, the e)3.953 F .722(xpansion of)-.15 F F2(wor)3.562 E -(d)-.37 E F0 .722(is substituted.)3.992 F(Other)5.722 E(-)-.2 E -(wise, the v)144 136.8 Q(alue of)-.25 E F2(par)3.75 E(ameter)-.15 E F0 -(is substituted.)3.23 E(${)108 148.8 Q F2(par)A(ameter)-.15 E F1(:=)A F2 -(wor)A(d)-.37 E F0(})A F1 2.004(Assign Default V)144 160.8 R(alues)-.92 -E F0 7.004(.I)C(f)-7.004 E F2(par)5.754 E(ameter)-.15 E F0 2.005 -(is unset or null, the e)5.234 F 2.005(xpansion of)-.15 F F2(wor)4.845 E -(d)-.37 E F0 2.005(is assigned to)5.275 F F2(par)144 172.8 Q(ameter)-.15 -E F0 5.279(.T).73 G .279(he v)-5.279 F .279(alue of)-.25 F F2(par)4.029 -E(ameter)-.15 E F0 .278(is then substituted.)3.508 F .278 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .346 +(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.847(,i)C +2.847(ti)-2.847 G(ntroduces)-2.847 E 2.907(al)108 96 S -2.15 -.25(ev e) +-2.907 H 2.907(lo).25 G 2.906(fi)-2.907 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.906 E(ame-)-.15 E(ter)108 108 Q F0 +2.578(;t)C .078(his is then e)-2.578 F .078(xpanded and that v)-.15 F +.079(alue is used in the rest of the e)-.25 F .079 +(xpansion, rather than the e)-.15 F .079(xpansion of the)-.15 F +(original)108 120 Q F1(par)2.543 E(ameter)-.15 E F0 5.043(.T)C .043 +(his is kno)-5.043 F .043(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 .042 +(alue is subject to tilde e)-.25 F .042(xpansion, parameter)-.15 F -.15 +(ex)108 132 S .248(pansion, command substitution, and arithmetic e).15 F +2.748(xpansion. If)-.15 F F1(par)2.749 E(ameter)-.15 E F0 .249 +(is a nameref, this e)2.749 F .249(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 .387(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.188 -.65(w. T)-.25 H .388(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.089(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.59 E F0(\),)A F2(bash)3.59 E F0 1.09 +(tests for a)3.59 F(parameter that is unset or null.)108 225.6 Q(Omitti\ +ng 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 .723(Use Default V)144 254.4 R(alues)-.92 E F0 5.723(.I)C(f)-5.723 +E F1(par)4.473 E(ameter)-.15 E F0 .723(is unset or null, the e)3.953 F +.722(xpansion of)-.15 F F1(wor)3.562 E(d)-.37 E F0 .722(is substituted.) +3.992 F(Other)5.722 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.004 +(Assign Default V)144 290.4 R(alues)-.92 E F0 7.004(.I)C(f)-7.004 E F1 +(par)5.754 E(ameter)-.15 E F0 2.005(is unset or null, the e)5.234 F +2.005(xpansion of)-.15 F F1(wor)4.845 E(d)-.37 E F0 2.005 +(is assigned to)5.275 F F1(par)144 302.4 Q(ameter)-.15 E F0 5.279(.T).73 +G .279(he v)-5.279 F .279(alue of)-.25 F F1(par)4.029 E(ameter)-.15 E F0 +.278(is then substituted.)3.508 F .278 (Positional parameters and special param-)5.278 F -(eters may not be assigned to in this w)144 184.8 Q(ay)-.1 E(.)-.65 E -(${)108 196.8 Q F2(par)A(ameter)-.15 E F1(:?)A F2(wor)A(d)-.37 E F0(})A -F1 .535(Display Err)144 208.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 .662(sage to that ef)144 220.8 R -.662(fect if)-.25 F F2(wor)3.502 E(d)-.37 E F0 .661(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 .662(sage to that ef)144 350.4 R +.662(fect if)-.25 F F1(wor)3.502 E(d)-.37 E F0 .661(is not present\) is\ written to the standard error and the shell, if it is not)3.932 F -(interacti)144 232.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 244.8 Q F2(par)A(ameter)-.15 E F1(:+)A F2 -(wor)A(d)-.37 E F0(})A F1 .745(Use Alter)144 256.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 268.8 Q F2(wor)2.84 E(d)-.37 E F0 -(is substituted.)3.27 E(${)108 280.8 Q F2(par)A(ameter)-.15 E F1(:)A F2 -(of)A(fset)-.18 E F0(})A(${)108 292.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 304.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.081 -(character speci\214ed by)144 316.8 R F2(of)3.581 E(fset)-.18 E F0 6.081 -(.I)C(f)-6.081 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.581 E(fset)-.18 E F0 6.081 +(.I)C(f)-6.081 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.582 E F1(*) -3.582 E F0 3.582(,o)C 3.582(ra)-3.582 G(n)-3.582 E(associati)144 328.8 Q +G 1.082(rray subscripted by)-3.582 F F2(@)3.582 E F0(or)3.582 E F2(*) +3.582 E F0 3.582(,o)C 3.582(ra)-3.582 G(n)-3.582 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 .042 -(substring of the v)144 340.8 R .042(alue of)-.25 F F2(par)2.542 E +(substring of the v)144 470.4 R .042(alue of)-.25 F F1(par)2.542 E (ameter)-.15 E F0 .043(starting at the character speci\214ed by)2.542 F -F2(of)2.543 E(fset)-.18 E F0 .043(and e)2.543 F .043(xtending to the) --.15 F .847(end of the v)144 352.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.543 E(fset)-.18 E F0 .043(and e)2.543 F .043(xtending to the) +-.15 F .847(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 .846(xpressions \(see)-.15 F/F3 9/Times-Bold@0 SF .846(ARITHMETIC EV) -3.346 F(ALU)-1.215 E -.855(AT)-.54 G(ION).855 E F0(belo)144 364.8 Q -(w\).)-.25 E(If)144 388.8 Q F2(of)3.028 E(fset)-.18 E F0 -.25(eva)3.029 +3.346 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.028 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 -.046(end of the v)144 400.8 R .046(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 +.046(end of the v)144 530.4 R .046(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 412.8 Q .202(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 .203 -(rather than a number of characters, and)2.702 F .558(the e)144 424.8 R -.558(xpansion is the characters between)-.15 F F2(of)3.058 E(fset)-.18 E +(of)144 542.4 Q .202(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 .203 +(rather than a number of characters, and)2.702 F .558(the e)144 554.4 R +.558(xpansion is the characters between)-.15 F F1(of)3.058 E(fset)-.18 E F0 .558(and that result.)3.058 F .557(Note that a ne)5.557 F -.05(ga) -.15 G(ti).05 E .857 -.15(ve o)-.25 H -.25(ff).15 G .557(set must be).25 -F(separated from the colon by at least one space to a)144 436.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 460.8 Q F2(par)2.958 E(ameter)-.15 E F0(is)2.958 -E F1(@)2.958 E F0 2.958(,t)C .458(he result is)-2.958 F F2(length)2.959 -E F0 .459(positional parameters be)2.959 F .459(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.958 E(ameter)-.15 E F0(is)2.958 +E F2(@)2.958 E F0 2.958(,t)C .458(he result is)-2.958 F F1(length)2.959 +E F0 .459(positional parameters be)2.959 F .459(ginning at)-.15 F F1(of) 2.959 E(fset)-.18 E F0 5.459(.A)C(ne)-2.5 E -.05(ga)-.15 G(ti).05 E -.15 -(ve)-.25 G F2(of)3.109 E(fset)-.18 E F0 .6(is tak)144 472.8 R .6 +(ve)-.25 G F1(of)3.109 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 .639(to the last positional parameter)144 484.8 +(va)-.25 G(luates).25 E .639(to the last positional parameter)144 614.4 R 5.639(.I)-.55 G 3.139(ti)-5.639 G 3.139(sa)-3.139 G 3.139(ne)-3.139 G -.639(xpansion error if)-3.289 F F2(length)3.14 E F0 -.25(eva)3.14 G .64 -(luates to a number less than).25 F(zero.)144 496.8 Q(If)144 520.8 Q F2 +.639(xpansion error if)-3.289 F F1(length)3.14 E F0 -.25(eva)3.14 G .64 +(luates to a number less than).25 F(zero.)144 626.4 Q(If)144 650.4 Q F1 (par)3.014 E(ameter)-.15 E F0 .514(is an inde)3.014 F -.15(xe)-.15 G 3.014(da).15 G .514(rray name subscripted by @ or *, the result is the) --3.014 F F2(length)3.014 E F0 .513(members of)3.013 F 1.081 -(the array be)144 532.8 R 1.081(ginning with ${)-.15 F F2(par)A(ameter) --.15 E F0([)A F2(of)A(fset)-.18 E F0 3.581(]}. A)B(ne)3.581 E -.05(ga) --.15 G(ti).05 E -.15(ve)-.25 G F2(of)3.732 E(fset)-.18 E F0 1.082 +-3.014 F F1(length)3.014 E F0 .513(members of)3.013 F 1.081 +(the array be)144 662.4 R 1.081(ginning with ${)-.15 F F1(par)A(ameter) +-.15 E F0([)A F1(of)A(fset)-.18 E F0 3.581(]}. A)B(ne)3.581 E -.05(ga) +-.15 G(ti).05 E -.15(ve)-.25 G F1(of)3.732 E(fset)-.18 E F0 1.082 (is tak)3.582 F 1.082(en relati)-.1 F 1.382 -.15(ve t)-.25 H 3.582(oo) -.15 G 1.082(ne greater)-3.582 F 1.08(than the maximum inde)144 544.8 R +.15 G 1.082(ne greater)-3.582 F 1.08(than the maximum inde)144 674.4 R 3.58(xo)-.15 G 3.58(ft)-3.58 G 1.08(he speci\214ed array)-3.58 F 6.079 (.I)-.65 G 3.579(ti)-6.079 G 3.579(sa)-3.579 G 3.579(ne)-3.579 G 1.079 -(xpansion error if)-3.729 F F2(length)3.579 E F0 -.25(eva)3.579 G 1.079 -(luates to a).25 F(number less than zero.)144 556.8 Q(Substring e)144 -580.8 Q(xpansion applied to an associati)-.15 E .3 -.15(ve a)-.25 H -(rray produces unde\214ned results.).15 E 1.93(Substring inde)144 604.8 -R 1.931(xing is zero-based unless the positional parameters are used, i\ -n which case the)-.15 F(inde)144 616.8 Q .307(xing starts at 1 by def) --.15 F 2.807(ault. If)-.1 F F2(of)2.807 E(fset)-.18 E F0 .307 -(is 0, and the positional parameters are used,)2.807 F F1($0)2.806 E F0 -.306(is pre\214x)2.806 F(ed)-.15 E(to the list.)144 628.8 Q(${)108 645.6 -Q F1(!)A F2(pr)A(e\214x)-.37 E F1(*)A F0(})A(${)108 657.6 Q F1(!)A F2 -(pr)A(e\214x)-.37 E F1(@)A F0(})A F1 .084(Names matching pr)144 669.6 R -(e\214x)-.18 E F0 5.084(.E)C .084(xpands to the names of v)-5.084 F .084 -(ariables whose names be)-.25 F .085(gin with)-.15 F F2(pr)2.585 E -(e\214x)-.37 E F0 2.585(,s)C(epa-)-2.585 E .258 -(rated by the \214rst character of the)144 681.6 R F3(IFS)2.758 E F0 -.257(special v)2.507 F 2.757(ariable. When)-.25 F F2(@)2.757 E F0 .257 -(is used and the e)2.757 F .257(xpansion appears)-.15 F -(within double quotes, each v)144 693.6 Q(ariable name e)-.25 E -(xpands to a separate w)-.15 E(ord.)-.1 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(22)193.45 E 0 Cg EP +(xpansion error if)-3.729 F F1(length)3.579 E F0 -.25(eva)3.579 G 1.079 +(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 August 7)145.395 E(22)194.555 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(${)108 84 Q/F1 10 -/Times-Bold@0 SF(!)A/F2 10/Times-Italic@0 SF(name)A F0([)A F2(@)A F0(]}) -A(${)108 96 Q F1(!)A F2(name)A F0([)A F2(*)A F0(]})A F1 2.035 -(List of array k)144 108 R(eys)-.1 E F0 7.036(.I)C(f)-7.036 E F2(name) -4.536 E F0 2.036(is an array v)4.536 F 2.036(ariable, e)-.25 F 2.036 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 1.93 +(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 .307 +(xing starts at 1 by def)-.15 F 2.807(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.806 E F0 .306(is pre\214x)2.806 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 +.084(Names matching pr)144 148.8 R(e\214x)-.18 E F0 5.084(.E)C .084 +(xpands to the names of v)-5.084 F .084(ariables whose names be)-.25 F +.085(gin with)-.15 F F1(pr)2.585 E(e\214x)-.37 E F0 2.585(,s)C(epa-) +-2.585 E .258(rated by the \214rst character of the)144 160.8 R/F3 9 +/Times-Bold@0 SF(IFS)2.758 E F0 .257(special v)2.507 F 2.757 +(ariable. When)-.25 F F1(@)2.757 E F0 .257(is used and the e)2.757 F +.257(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 +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.035(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 -.596(assigned in)144 120 R F2(name)3.096 E F0 5.596(.I)C(f)-5.596 E F2 +.596(assigned in)144 225.6 R F1(name)3.096 E F0 5.596(.I)C(f)-5.596 E F1 (name)3.096 E F0 .595(is not an array)3.096 F 3.095(,e)-.65 G .595 -(xpands to 0 if)-3.245 F F2(name)3.095 E F0 .595 -(is set and null otherwise.)3.095 F(When)5.595 E F2(@)144 132 Q F0 +(xpands to 0 if)-3.245 F F1(name)3.095 E F0 .595 +(is set and null otherwise.)3.095 F(When)5.595 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 -148.8 Q F1(#)A F2(par)A(ameter)-.15 E F0(})A F1 -.1(Pa)144 160.8 S .47 +254.4 Q F2(#)A F1(par)A(ameter)-.15 E F0(})A F2 -.1(Pa)144 266.4 S .47 (rameter length).1 F F0 5.47(.T)C .471(he length in characters of the v) --5.47 F .471(alue of)-.25 F F2(par)2.971 E(ameter)-.15 E F0 .471 -(is substituted.)2.971 F(If)5.471 E F2(par)4.221 E(ame-)-.15 E(ter)144 -172.8 Q F0(is)4.439 E F1(*)3.709 E F0(or)3.709 E F1(@)3.709 E F0 3.708 +-5.47 F .471(alue of)-.25 F F1(par)2.971 E(ameter)-.15 E F0 .471 +(is substituted.)2.971 F(If)5.471 E F1(par)4.221 E(ame-)-.15 E(ter)144 +278.4 Q F0(is)4.439 E F2(*)3.709 E F0(or)3.709 E F2(@)3.709 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.208 E F2(par)4.958 E(ameter)-.15 E F0 1.208(is an)4.438 F .348 -(array name subscripted by)144 184.8 R F1(*)2.849 E F0(or)2.849 E F1(@) +6.208 E F1(par)4.958 E(ameter)-.15 E F0 1.208(is an)4.438 F .348 +(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.349 -(.I)-.65 G(f)-5.349 E F2(par)145.25 196.8 Q(ameter)-.15 E F0 .456 +(.I)-.65 G(f)-5.349 E F1(par)145.25 302.4 Q(ameter)-.15 E F0 .456 (is an inde)3.686 F -.15(xe)-.15 G 2.956(da).15 G .456 (rray name subscripted by a ne)-2.956 F -.05(ga)-.15 G(ti).05 E .756 -.15(ve n)-.25 H(umber).15 E 2.955(,t)-.4 G .455 -(hat number is interpreted)-2.955 F .972(as relati)144 208.8 R 1.272 +(hat number is interpreted)-2.955 F .972(as relati)144 314.4 R 1.272 -.15(ve t)-.25 H 3.472(oo).15 G .973(ne greater than the maximum inde) --3.472 F 3.473(xo)-.15 G(f)-3.473 E F2(par)3.473 E(ameter)-.15 E F0 +-3.472 F 3.473(xo)-.15 G(f)-3.473 E F1(par)3.473 E(ameter)-.15 E F0 3.473(,s)C 3.473(on)-3.473 G -2.25 -.15(eg a)-3.473 H(ti).15 E 1.273 -.15(ve i)-.25 H .973(ndices count back).15 F(from the end of the array) -144 220.8 Q 2.5(,a)-.65 G(nd an inde)-2.5 E 2.5(xo)-.15 G 2.5<66ad>-2.5 -G 2.5(1r)-2.5 G(eferences the last element.)-2.5 E(${)108 237.6 Q F2 -(par)A(ameter)-.15 E F1(#)A F2(wor)A(d)-.37 E F0(})A(${)108 249.6 Q F2 -(par)A(ameter)-.15 E F1(##)A F2(wor)A(d)-.37 E F0(})A F1(Remo)144 261.6 +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 F2(wor)4.036 E(d)-.37 E F0 1.196 +(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 -.543(name e)144 273.6 R .544(xpansion, and matched ag)-.15 F .544 -(ainst the e)-.05 F .544(xpanded v)-.15 F .544(alue of)-.25 F F2(par) +.543(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 .544(using the rules described)3.774 F(under) -144 285.6 Q F1 -.1(Pa)3.222 G(tter).1 E 3.222(nM)-.15 G(atching)-3.222 E +144 391.2 Q F2 -.1(Pa)3.222 G(tter).1 E 3.222(nM)-.15 G(atching)-3.222 E F0(belo)3.222 E 4.522 -.65(w. I)-.25 H 3.222(ft).65 G .721 (he pattern matches the be)-3.222 F .721(ginning of the v)-.15 F .721 -(alue of)-.25 F F2(par)3.221 E(ameter)-.15 E F0(,).73 E 1.151 -(then the result of the e)144 297.6 R 1.151(xpansion is the e)-.15 F -1.151(xpanded v)-.15 F 1.151(alue of)-.25 F F2(par)4.902 E(ameter)-.15 E +(alue of)-.25 F F1(par)3.221 E(ameter)-.15 E F0(,).73 E 1.151 +(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.902 E(ameter)-.15 E F0 1.152(with the shortest matching)4.382 F .184(pattern \(the `)144 -309.6 R(`)-.74 E F1(#)A F0 1.664 -.74('' c)D .184 -(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F1(##)A F0 -1.664 -.74('' c)D .184(ase\) deleted.).74 F(If)5.183 E F2(par)3.933 E -(ameter)-.15 E F0(is)3.413 E F1(@)2.683 E F0(or)144 321.6 Q F1(*)3.018 E +415.2 R(`)-.74 E F2(#)A F0 1.664 -.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.183 E F1(par)3.933 E +(ameter)-.15 E F0(is)3.413 E F2(@)2.683 E F0(or)144 427.2 Q F2(*)3.018 E F0 3.018(,t)C .518(he pattern remo)-3.018 F -.25(va)-.15 G 3.018(lo).25 G .518 (peration is applied to each positional parameter in turn, and the e) --3.018 F(xpan-)-.15 E 1.122(sion is the resultant list.)144 333.6 R(If) -6.121 E F2(par)4.871 E(ameter)-.15 E F0 1.121(is an array v)4.351 F -1.121(ariable subscripted with)-.25 F F1(@)3.621 E F0(or)3.621 E F1(*) -3.621 E F0 3.621(,t)C 1.121(he pattern)-3.621 F(remo)144 345.6 Q -.25 +-3.018 F(xpan-)-.15 E 1.122(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.621 E F0 3.621(,t)C 1.121(he pattern)-3.621 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 357.6 Q(${)108 -374.4 Q F2(par)A(ameter)-.15 E F1(%)A F2(wor)A(d)-.37 E F0(})A(${)108 -386.4 Q F2(par)A(ameter)-.15 E F1(%%)A F2(wor)A(d)-.37 E F0(})A F1(Remo) -144 398.4 Q .347 -.1(ve m)-.1 H .147(atching suf\214x patter).1 F(n)-.15 -E F0 5.147(.T)C(he)-5.147 E F2(wor)2.647 E(d)-.37 E F0 .147(is e)2.647 F -.146(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 -410.4 S .458(pansion, and matched ag).15 F .458(ainst the e)-.05 F .458 -(xpanded v)-.15 F .458(alue of)-.25 F F2(par)4.209 E(ameter)-.15 E F0 -.459(using the rules described under)3.689 F F1 -.1(Pa)144 422.4 S(tter) -.1 E 4.593(nM)-.15 G(atching)-4.593 E F0(belo)4.593 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.092 -(xpanded v)-.15 F 2.092(alue of)-.25 F F2(par)144 434.4 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 F2 +-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 .347 -.1(ve m)-.1 H .147(atching suf\214x patter).1 F(n)-.15 E F0 +5.147(.T)C(he)-5.147 E F1(wor)2.647 E(d)-.37 E F0 .147(is e)2.647 F .146 +(xpanded to produce a pattern just as in pathname)-.15 F -.15(ex)144 516 +S .458(pansion, and matched ag).15 F .458(ainst the e)-.05 F .458 +(xpanded v)-.15 F .458(alue of)-.25 F F1(par)4.209 E(ameter)-.15 E F0 +.459(using the rules described under)3.689 F F2 -.1(Pa)144 528 S(tter).1 +E 4.593(nM)-.15 G(atching)-4.593 E F0(belo)4.593 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.092(xpanded v)-.15 F 2.092(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.085 -(matching pattern \(the `)144 446.4 R(`)-.74 E F1(%)A F0 2.565 -.74 -('' c)D 1.084(ase\) or the longest matching pattern \(the `).74 F(`)-.74 -E F1(%%)A F0 2.564 -.74('' c)D 1.084(ase\) deleted.).74 F(If)6.084 E F2 -(par)145.25 458.4 Q(ameter)-.15 E F0(is)3.389 E F1(@)2.659 E F0(or)2.659 -E F1(*)2.659 E F0 2.659(,t)C .159(he pattern remo)-2.659 F -.25(va)-.15 -G 2.659(lo).25 G .16 +(matching pattern \(the `)144 552 R(`)-.74 E F2(%)A F0 2.565 -.74('' c)D +1.084(ase\) or the longest matching pattern \(the `).74 F(`)-.74 E F2 +(%%)A F0 2.564 -.74('' c)D 1.084(ase\) deleted.).74 F(If)6.084 E F1(par) +145.25 564 Q(ameter)-.15 E F0(is)3.389 E F2(@)2.659 E F0(or)2.659 E F2 +(*)2.659 E F0 2.659(,t)C .159(he pattern remo)-2.659 F -.25(va)-.15 G +2.659(lo).25 G .16 (peration is applied to each positional parameter in turn,)-2.659 F .51 -(and the e)144 470.4 R .51(xpansion is the resultant list.)-.15 F(If) -5.51 E F2(par)4.259 E(ameter)-.15 E F0 .509(is an array v)3.739 F .509 -(ariable subscripted with)-.25 F F1(@)3.009 E F0(or)3.009 E F1(*)3.009 E -F0(,)A .422(the pattern remo)144 482.4 R -.25(va)-.15 G 2.922(lo).25 G +(and the e)144 576 R .51(xpansion is the resultant list.)-.15 F(If)5.51 +E F1(par)4.259 E(ameter)-.15 E F0 .509(is an array v)3.739 F .509 +(ariable subscripted with)-.25 F F2(@)3.009 E F0(or)3.009 E F2(*)3.009 E +F0(,)A .422(the pattern remo)144 588 R -.25(va)-.15 G 2.922(lo).25 G .422(peration is applied to each member of the array in turn, and the e) --2.922 F .423(xpansion is)-.15 F(the resultant list.)144 494.4 Q(${)108 -511.2 Q F2(par)A(ameter)-.15 E F1(/)A F2(pattern)A F1(/)A F2(string)A F0 -(})A F1 -.1(Pa)144 523.2 S(tter).1 E 3.607(ns)-.15 G(ubstitution)-3.607 -E F0 6.107(.T)C(he)-6.107 E F2(pattern)3.607 E F0 1.107(is e)3.607 F +-2.922 F .423(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.607(ns)-.15 G(ubstitution)-3.607 +E F0 6.107(.T)C(he)-6.107 E F1(pattern)3.607 E F0 1.107(is e)3.607 F 1.106(xpanded to produce a pattern just as in pathname e)-.15 F(xpan-) --.15 E(sion,)144 535.2 Q F2 -.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 F2(pattern)3.7 E -F0(ag)3.7 E 1.2(ainst its v)-.05 F 1.2(alue is replaced with)-.25 F F2 -(string)144 547.2 Q F0 5.397(.T)C .397 -(he match is performed using the rules described under)-5.397 F F1 -.1 +-.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.397(.T)C .397 +(he match is performed using the rules described under)-5.397 F F2 -.1 (Pa)2.896 G(tter).1 E 2.896(nM)-.15 G(atching)-2.896 E F0(belo)2.896 E -4.196 -.65(w. I)-.25 H(f).65 E F2(pat-)2.896 E(tern)144 559.2 Q F0(be) -2.569 E .069(gins with)-.15 F F1(/)2.569 E F0 2.569(,a)C .069 -(ll matches of)-2.569 F F2(pattern)2.569 E F0 .069(are replaced with) -2.569 F F2(string)2.57 E F0 5.07(.N)C .07 -(ormally only the \214rst match is)-5.07 F 2.58(replaced. If)144 571.2 R -F2(pattern)2.58 E F0(be)2.58 E .08(gins with)-.15 F F1(#)2.58 E F0 2.58 +4.196 -.65(w. I)-.25 H(f).65 E F1(pat-)2.896 E(tern)144 664.8 Q F0(be) +2.569 E .069(gins with)-.15 F F2(/)2.569 E F0 2.569(,a)C .069 +(ll matches of)-2.569 F F1(pattern)2.569 E F0 .069(are replaced with) +2.569 F F1(string)2.57 E F0 5.07(.N)C .07 +(ormally only the \214rst match is)-5.07 F 2.58(replaced. If)144 676.8 R +F1(pattern)2.58 E F0(be)2.58 E .08(gins with)-.15 F F2(#)2.58 E F0 2.58 (,i)C 2.58(tm)-2.58 G .079(ust match at the be)-2.58 F .079 -(ginning of the e)-.15 F .079(xpanded v)-.15 F .079(alue of)-.25 F F2 -(par)2.579 E(am-)-.15 E(eter)144 583.2 Q F0 5.761(.I)C(f)-5.761 E F2 -(pattern)3.261 E F0(be)3.261 E .761(gins with)-.15 F F1(%)3.261 E F0 +(ginning of the e)-.15 F .079(xpanded v)-.15 F .079(alue of)-.25 F F1 +(par)2.579 E(am-)-.15 E(eter)144 688.8 Q F0 5.761(.I)C(f)-5.761 E F1 +(pattern)3.261 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 F2(par)3.262 E(ameter)-.15 E -F0 5.762(.I)C(f)-5.762 E F2(string)144 595.2 Q F0 .958 -(is null, matches of)3.458 F F2(pattern)3.458 E F0 .958 -(are deleted and the)3.458 F F1(/)3.458 E F0(follo)3.458 E(wing)-.25 E -F2(pattern)3.457 E F0 .957(may be omitted.)3.457 F .957(If the)5.957 F -F1(nocasematch)144 607.2 Q F0 .492 +.761(xpanded v)-.15 F .761(alue of)-.25 F F1(par)3.262 E(ameter)-.15 E +F0 5.762(.I)C(f)-5.762 E F1(string)144 700.8 Q F0 .958 +(is null, matches of)3.458 F F1(pattern)3.458 E F0 .958 +(are deleted and the)3.458 F F2(/)3.458 E F0(follo)3.458 E(wing)-.25 E +F1(pattern)3.457 E F0 .957(may be omitted.)3.457 F .957(If the)5.957 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 .884(betic characters.) -144 619.2 R(If)5.884 E F2(par)4.634 E(ameter)-.15 E F0(is)4.114 E F1(@) -3.384 E F0(or)3.383 E F1(*)3.383 E F0 3.383(,t)C .883 -(he substitution operation is applied to each positional)-3.383 F 1.002 -(parameter in turn, and the e)144 631.2 R 1.002 -(xpansion is the resultant list.)-.15 F(If)6.002 E F2(par)4.752 E -(ameter)-.15 E F0 1.002(is an array v)4.232 F 1.002(ariable sub-)-.25 F -.159(scripted with)144 643.2 R F1(@)2.659 E F0(or)2.659 E F1(*)2.659 E -F0 2.659(,t)C .159(he substitution operation is applied to each member \ -of the array in turn, and)-2.659 F(the e)144 655.2 Q -(xpansion is the resultant list.)-.15 E(${)108 672 Q F2(par)A(ameter) --.15 E F1(^)A F2(pattern)A F0(})A(${)108 684 Q F2(par)A(ameter)-.15 E F1 -(^^)A F2(pattern)A F0(})A(${)108 696 Q F2(par)A(ameter)-.15 E F1(,)A F2 -(pattern)A F0(})A(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(23)193.45 -E 0 Cg EP +144 724.8 R(If)5.884 E F1(par)4.634 E(ameter)-.15 E F0(is)4.114 E F2(@) +3.384 E F0(or)3.383 E F2(*)3.383 E F0 3.383(,t)C .883 +(he substitution operation is applied to each positional)-3.383 F +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(23)194.555 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(${)108 84 Q/F1 10 -/Times-Italic@0 SF(par)A(ameter)-.15 E/F2 10/Times-Bold@0 SF(,,)A F1 -(pattern)A F0(})A F2 .437(Case modi\214cation)144 96 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.002 +(ariable sub-)-.25 F .159(scripted with)144 96 R/F2 10/Times-Bold@0 SF +(@)2.659 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 .437(Case modi\214cation) +144 172.8 R F0 5.437(.T)C .437(his e)-5.437 F .438 (xpansion modi\214es the case of alphabetic characters in)-.15 F F1(par) -2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 108 Q F0 -1.407(is e)3.907 F 1.407 +2.938 E(ameter)-.15 E F0 5.438(.T)C(he)-5.438 E F1(pattern)144 184.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 120 S -1.231(panded v).15 F 1.231(alue of)-.25 F F1(par)3.732 E(ameter)-.15 E +(xpansion. Each)-.15 F 1.406(character in the)3.906 F -.15(ex)144 196.8 +S 1.231(panded v).15 F 1.231(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 -132 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 144 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 156 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 +1.548(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 168 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 +-.15 E -.25(va)144 244.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 180 Q F0 .78 +(xpanded v)-.15 F 3.134(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 192 R -(xpansion)-.15 E .469(is the resultant list.)144 204 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 .469(is the resultant list.)144 280.8 R(If)5.469 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 216 Q -(xpansion is the resultant list.)-.15 E(${)108 232.8 Q F1(par)A(ameter) --.15 E F2(@)A F1(oper)A(ator)-.15 E F0(})A F2 -.1(Pa)144 244.8 S .86 +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 256.8 R F1 +F1(par)3.36 E(ameter)-.15 E F0 .154(or information about)144 333.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 -268.8 Q F2(Q)144 292.8 Q F0 1.064(The e)180 292.8 R 1.064 +345.6 Q F2(Q)144 369.6 Q F0 1.064(The e)180 369.6 R 1.064 (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 304.8 Q F2(E)144 316.8 Q F0 .441(The e)180 316.8 R +(reused as input.)180 381.6 Q F2(E)144 393.6 Q F0 .441(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 328.8 S(panded as with the).15 E F2($'...)2.5 E(')-.55 E F0 -(quoting mechanism.)2.5 E F2(P)144 340.8 Q F0 1.072(The e)180 340.8 R +-.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.072(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 352.8 Q F2(PR) -2.5 E(OMPTING)-.3 E F0(belo)2.5 E(w\).)-.25 E F2(A)144 364.8 Q F0 1.138 -(The e)180 364.8 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.138 +(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 376.8 Q +F2(declar)3.637 E(e)-.18 E F0(command)3.637 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 388.8 Q F0 -(The e)180 388.8 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 405.6 Q F1(par)5.33 E(ameter)-.15 E F0 +(ttrib).55 E(utes.)-.2 E(If)144 482.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 (he operation is applied to each positional parameter in turn, and the) --4.08 F -.15(ex)144 417.6 S .13(pansion is the resultant list.).15 F(If) +-4.08 F -.15(ex)144 494.4 S .13(pansion is the resultant list.).15 F(If) 5.13 E F1(par)3.88 E(ameter)-.15 E F0 .129(is an array v)3.36 F .129 (ariable subscripted with)-.25 F F2(@)2.629 E F0(or)2.629 E F2(*)2.629 E F0 2.629(,t)C .129(he oper)-2.629 F(-)-.2 E (ation is applied to each member of the array in turn, and the e)144 -429.6 Q(xpansion is the resultant list.)-.15 E 1.849 -(The result of the e)144 453.6 R 1.849(xpansion is subject to w)-.15 F +506.4 Q(xpansion is the resultant list.)-.15 E 1.849 +(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.85(xpansion as described)-.15 -F(belo)144 465.6 Q -.65(w.)-.25 G F2(Command Substitution)87 482.4 Q F1 -1.698(Command substitution)108 494.4 R F0(allo)4.198 E 1.697 +F(belo)144 542.4 Q -.65(w.)-.25 G F2(Command Substitution)87 559.2 Q F1 +1.698(Command substitution)108 571.2 R F0(allo)4.198 E 1.697 (ws the output of a command to replace the command name.)-.25 F 1.697 -(There are tw)6.697 F(o)-.1 E(forms:)108 506.4 Q F2($\()144 523.2 Q F1 -(command)A F2(\))1.666 E F0(or)108 535.2 Q F2<92>144 547.2 Q F1(command) -A F2<92>A(Bash)108 564 Q F0 .088(performs the e)2.588 F .088 +(There are tw)6.697 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 .088(performs the e)2.588 F .088 (xpansion by e)-.15 F -.15(xe)-.15 G(cuting).15 E F1(command)2.588 E F0 .089(in a subshell en)2.589 F .089(vironment and replacing the command) -.4 F .41(substitution with the standard output of the command, with an) -108 576 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 .191(lines are not deleted, b)108 588 -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.692 E F1(\214le)2.692 -E F2(\))A F0(can be replaced by the equi)108 600 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 +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 .191(lines are not deleted, b) +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.692 E F1(\214le) +2.692 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 616.8 R(xcept)-.15 E -.314(when follo)108 628.8 R .314(wed by)-.25 F F2($)2.814 E F0(,)A F2 + used, backslash retains its literal meaning e)108 693.6 R(xcept)-.15 E +.314(when follo)108 705.6 R .314(wed by)-.25 F F2($)2.814 E F0(,)A F2 <92>2.814 E F0 2.814(,o)C(r)-2.814 E F2(\\)2.814 E F0 5.314(.T)C .315(h\ e \214rst backquote not preceded by a backslash terminates the command \ -sub-)-5.314 F 3.887(stitution. When)108 640.8 R 1.387(using the $\() +sub-)-5.314 F 3.887(stitution. When)108 717.6 R 1.387(using the $\() 3.887 F F1(command).833 E F0 3.887(\)f)1.666 G 1.386 (orm, all characters between the parentheses mak)-3.887 F 3.886(eu)-.1 G 3.886(pt)-3.886 G 1.386(he com-)-3.886 F -(mand; none are treated specially)108 652.8 Q(.)-.65 E .894 -(Command substitutions may be nested.)108 669.6 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 681.6 Q .422 -(If the substitution appears within double quotes, w)108 698.4 R .422 -(ord splitting and pathname e)-.1 F .422(xpansion are not performed)-.15 -F(on the results.)108 710.4 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 -E(24)193.45 E 0 Cg EP +(mand; none are treated specially)108 729.6 Q(.)-.65 E(GNU Bash 5.0)72 +768 Q(2018 August 7)145.395 E(24)194.555 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(Arithmetic Expansion)87 84 Q F0 1.034(Arithmetic e)108 96 R 1.034 +(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 96 Q .422 +(If the substitution appears within double quotes, w)108 112.8 R .422 +(ord splitting and pathname e)-.1 F .422(xpansion are not performed)-.15 +F(on the results.)108 124.8 Q/F1 10/Times-Bold@0 SF +(Arithmetic Expansion)87 141.6 Q F0 1.034(Arithmetic e)108 153.6 R 1.034 (xpansion allo)-.15 F 1.034(ws the e)-.25 F -.25(va)-.25 G 1.034 (luation of an arithmetic e).25 F 1.035 (xpression and the substitution of the result.)-.15 F -(The format for arithmetic e)108 108 Q(xpansion is:)-.15 E F1($\(\()144 -124.8 Q/F2 10/Times-Italic@0 SF -.2(ex)C(pr).2 E(ession)-.37 E F1(\)\))A -F0(The)108 141.6 Q F2 -.2(ex)2.666 G(pr).2 E(ession)-.37 E F0 .165 -(is treated as if it were within double quotes, b)2.906 F .165 +(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.666 G(pr).2 E(ession)-.37 E F0 +.165(is treated as if it were within double quotes, b)2.906 F .165 (ut a double quote inside the parentheses is not)-.2 F .23 -(treated specially)108 153.6 R 5.23(.A)-.65 G .23(ll tok)-5.23 F .231 +(treated specially)108 211.2 R 5.23(.A)-.65 G .23(ll tok)-5.23 F .231 (ens in the e)-.1 F .231(xpression under)-.15 F .231(go parameter and v) -.18 F .231(ariable e)-.25 F .231(xpansion, command substi-)-.15 F 1.06 -(tution, and quote remo)108 165.6 R -.25(va)-.15 G 3.56(l. The).25 F +(tution, and quote remo)108 223.2 R -.25(va)-.15 G 3.56(l. The).25 F 1.059(result is treated as the arithmetic e)3.56 F 1.059 (xpression to be e)-.15 F -.25(va)-.25 G 3.559(luated. Arithmetic).25 F --.15(ex)108 177.6 S(pansions may be nested.).15 E 1.378(The e)108 194.4 -R -.25(va)-.25 G 1.378 +-.15(ex)108 235.2 S(pansions may be nested.).15 E 1.378(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.879 E F2 -.2(ex)108 206.4 S(pr).2 E(ession)-.37 E F0(is in)2.74 E +(If)5.879 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 223.2 Q -(ocess Substitution)-.18 E F2(Pr)108 235.2 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 247.2 Q F1(<\()3.25 E F2 +(It tak)5.405 F .405(es the form)-.1 F(of)108 304.8 Q F1(<\()3.25 E F2 (list)A F1(\)).833 E F0(or)3.25 E F1(>\()3.25 E F2(list)A F1(\)).833 E F0 5.75(.T)C .751(he process)-5.75 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 .148 -(This \214lename is passed as an ar)108 259.2 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.647 (xpansion. If)-.15 F(the)2.647 E F1(>\()2.647 E F2(list)A F1(\)).833 E -F0 .559(form is used, writing to the \214le will pro)108 271.2 R .559 +F0 .559(form is used, writing to the \214le will pro)108 328.8 R .559 (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.06 E F2(list)A F1(\)).833 E F0 .56 -(form is used, the \214le passed as an)3.06 F(ar)108 283.2 Q .309 +(form is used, the \214le passed as an)3.06 F(ar)108 340.8 Q .309 (gument should be read to obtain the output of)-.18 F F2(list)2.808 E F0 5.308(.P)C .308(rocess substitution is supported on systems that sup-) --5.308 F(port named pipes \()108 295.2 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 .896(When a)108 312 R -.25(va)-.2 -G .896(ilable, process substitution is performed simultaneously with pa\ -rameter and v).25 F .897(ariable e)-.25 F(xpansion,)-.15 E -(command substitution, and arithmetic e)108 324 Q(xpansion.)-.15 E F1 --.75(Wo)87 340.8 S(rd Splitting).75 E F0 1.143 -(The shell scans the results of parameter e)108 352.8 R 1.142 +(method of naming open \214les.)2.5 E .896(When a)108 369.6 R -.25(va) +-.2 G .896(ilable, process substitution is performed simultaneously wit\ +h parameter and v).25 F .897(ariable e)-.25 F(xpansion,)-.15 E +(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.143 +(The shell scans the results of parameter e)108 410.4 R 1.142 (xpansion, command substitution, and arithmetic e)-.15 F 1.142 -(xpansion that)-.15 F(did not occur within double quotes for)108 364.8 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 381.6 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 393.6 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()2.707 E F0 -(,)A .836(the def)108 405.6 R .836(ault, then sequences of)-.1 F F1 +(,)A .836(the def)108 463.2 R .836(ault, then sequences of)-.1 F F1 ()3.336 E F0(,)A F1()3.336 E F0 3.336(,a)C(nd)-3.336 E F1 ()3.336 E F0 .837(at the be)3.336 F .837 -(ginning and end of the results of)-.15 F .346(the pre)108 417.6 R .345 +(ginning and end of the results of)-.15 F .346(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.236(to delimit w)108 429.6 R 3.736(ords. If)-.1 F F3(IFS)3.736 +-.15 E 1.236(to delimit w)108 487.2 R 3.736(ords. If)-.1 F F3(IFS)3.736 E F0 1.236(has a v)3.486 F 1.236(alue other than the def)-.25 F 1.237 (ault, then sequences of the whitespace characters)-.1 F F1(space)108 -441.6 Q F0(,)A F1(tab)2.507 E F0 2.507(,a)C(nd)-2.507 E F1(newline)2.507 +499.2 Q F0(,)A F1(tab)2.507 E F0 2.507(,a)C(nd)-2.507 E F1(newline)2.507 E F0 .007(are ignored at the be)2.507 F .006(ginning and end of the w) -.15 F .006(ord, as long as the whitespace charac-)-.1 F .92 -(ter is in the v)108 453.6 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 .921 (that is not)3.17 F F3(IFS)3.421 E F0(whitespace,)3.171 E .429 -(along with an)108 465.6 R 2.928(ya)-.15 G(djacent)-2.928 E F3(IFS)2.928 +(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 .428 (whitespace charac-)2.678 F(ters is also treated as a delimiter)108 -477.6 Q 5(.I)-.55 G 2.5(ft)-5 G(he v)-2.5 E(alue of)-.25 E F3(IFS)2.5 E +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 494.4 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 +(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 .485(implicit null ar)108 506.4 R .485 +6.927 E .485(implicit null ar)108 564 R .485 (guments, resulting from the e)-.18 F .484 (xpansion of parameters that ha)-.15 F .784 -.15(ve n)-.2 H 2.984(ov).15 G .484(alues, are remo)-3.234 F -.15(ve)-.15 G 2.984(d. If).15 F(a)2.984 -E 1.571(parameter with no v)108 518.4 R 1.571(alue is e)-.25 F 1.571 +E 1.571(parameter with no v)108 576 R 1.571(alue is e)-.25 F 1.571 (xpanded within double quotes, a null ar)-.15 F 1.572 (gument results and is retained and)-.18 F .724 -(passed to a command as an empty string.)108 530.4 R .724 +(passed to a command as an empty string.)108 588 R .724 (When a quoted null ar)5.724 F .723(gument appears as part of a w)-.18 F -.723(ord whose)-.1 F -.15(ex)108 542.4 S .175 +.723(ord whose)-.1 F -.15(ex)108 600 S .175 (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.1672.676 F F0(becomes)2.676 E F52.676 -E F0 .176(after w)2.676 F .176(ord split-)-.1 F(ting and null ar)108 -554.4 Q(gument remo)-.18 E -.25(va)-.15 G(l.).25 E(Note that if no e)108 -571.2 Q(xpansion occurs, no splitting is performed.)-.15 E F1 -.1(Pa)87 -588 S(thname Expansion).1 E F0 .371(After w)108 600 R .371 +E F0 .176(after w)2.676 F .176(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 .371(After w)108 657.6 R .371 (ord splitting, unless the)-.1 F F12.871 E F0 .371 (option has been set,)2.871 F F1(bash)2.871 E F0 .37(scans each w)2.87 F .37(ord for the characters)-.1 F F1(*)2.87 E F0(,)A F1(?)2.87 E F0 2.87 (,a)C(nd)-2.87 E F1([)2.87 E F0(.)A .677 -(If one of these characters appears, then the w)108 612 R .677 +(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 .678(nd replaced with an alphabeti-)-3.177 F .562 -(cally sorted list of \214lenames matching the pattern \(see)108 624 R +(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 .561(no matching \214lenames)3.061 F .008 -(are found, and the shell option)108 636 R F1(nullglob)2.508 E F0 .008 +(are found, and the shell option)108 693.6 R F1(nullglob)2.508 E F0 .008 (is not enabled, the w)2.508 F .009(ord is left unchanged.)-.1 F .009 (If the)5.009 F F1(nullglob)2.509 E F0 .009(option is)2.509 F .443 -(set, and no matches are found, the w)108 648 R .443(ord is remo)-.1 F +(set, and no matches are found, the w)108 705.6 R .443(ord is remo)-.1 F -.15(ve)-.15 G 2.943(d. If).15 F(the)2.942 E F1(failglob)2.942 E F0 .442 (shell option is set, and no matches are)2.942 F 1.38 -(found, an error message is printed and the command is not e)108 660 R +(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 .104 -(enabled, the match is performed without re)108 672 R -.05(ga)-.15 G +(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 .103 -(When a pattern is used)5.103 F .377(for pathname e)108 684 R .377 -(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 .378 -(wing a slash must be)-.25 F 1.354(matched e)108 696 R(xplicitly)-.15 E +(When a pattern is used)5.103 F(GNU Bash 5.0)72 768 Q(2018 August 7) +145.395 E(25)194.555 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 .377 +(for pathname e)108 84 R .377(xpansion, the character)-.15 F/F1 10 +/Times-Bold@0 SF -.63(``)2.878 G -.55(.').63 G(')-.08 E F0 .378 +(at the start of a name or immediately follo)5.378 F .378 +(wing a slash must be)-.25 F 1.354(matched e)108 96 R(xplicitly)-.15 E 3.854(,u)-.65 G 1.354(nless the shell option)-3.854 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.853 G(..).63 E -.63 ('')-.55 G F0 1.353(must al)6.983 F -.1(wa)-.1 G 1.353(ys be).1 F .485 -(matched e)108 708 R(xplicitly)-.15 E 2.985(,e)-.65 G -.15(ve)-3.235 G +(matched e)108 108 R(xplicitly)-.15 E 2.985(,e)-.65 G -.15(ve)-3.235 G 2.985(ni).15 G(f)-2.985 E F1(dotglob)2.985 E F0 .485(is set.)2.985 F .485(In other cases, the)5.485 F F1 -.63(``)2.985 G -.55(.').63 G(')-.08 E F0 .486(character is not treated specially)5.485 F 5.486(.W)-.65 G (hen)-5.486 E .115(matching a pathname, the slash character must al)108 -720 R -.1(wa)-.1 G .114(ys be matched e).1 F .114 -(xplicitly by a slash in the pattern, b)-.15 F .114(ut in)-.2 F -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(25)193.45 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 .581 -(other matching conte)108 84 R .581 +120 R -.1(wa)-.1 G .114(ys be matched e).1 F .114 +(xplicitly by a slash in the pattern, b)-.15 F .114(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/F1 9/Times-Bold@0 SF -.09(Pa)3.081 -G(tter).09 E(n)-.135 E(Matching)108 96 Q/F2 9/Times-Roman@0 SF(.)A F0 -.073(See the description of)4.573 F/F3 10/Times-Bold@0 SF(shopt)2.573 E -F0(belo)2.573 E 2.573(wu)-.25 G(nder)-2.573 E F1 .072(SHELL B)2.572 F -(UIL)-.09 E .072(TIN COMMANDS)-.828 F F0 .072(for a description of the) -2.322 F F3(nocaseglob)108 108 Q F0(,)A F3(nullglob)2.5 E F0(,)A F3 -(failglob)2.5 E F0 2.5(,a)C(nd)-2.5 E F3(dotglob)2.5 E F0 -(shell options.)2.5 E(The)108 124.8 Q F1(GLOBIGNORE)2.63 E F0 .13 -(shell v)2.38 F .131 +-.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 +.073(See the description of)4.573 F F1(shopt)2.573 E F0(belo)2.573 E +2.573(wu)-.25 G(nder)-2.573 E F2 .072(SHELL B)2.572 F(UIL)-.09 E .072 +(TIN COMMANDS)-.828 F F0 .072(for a description of the)2.322 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.63 E F0 .13(shell v)2.38 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.631 E F0 5.131(.I).24 G(f)-5.131 E -F1(GLO-)2.631 E(BIGNORE)108 136.8 Q F0 2.015(is set, each matching \214\ -le name that also matches one of the patterns in)4.265 F F1(GLOBIGNORE) -4.515 E F0(is)4.264 E(remo)108 148.8 Q -.15(ve)-.15 G 3.914(df).15 G -1.414(rom the list of matches.)-3.914 F 1.415(If the)6.415 F F3 +F2(GLO-)2.631 E(BIGNORE)108 184.8 Q F0 2.015(is set, each matching \214\ +le name that also matches one of the patterns in)4.265 F F2(GLOBIGNORE) +4.515 E F0(is)4.264 E(remo)108 196.8 Q -.15(ve)-.15 G 3.914(df).15 G +1.414(rom the list of matches.)-3.914 F 1.415(If the)6.415 F F1 (nocaseglob)3.915 E F0 1.415(option is set, the matching ag)3.915 F -1.415(ainst the patterns in)-.05 F F1(GLOBIGNORE)108 160.8 Q F0 .147 +1.415(ainst the patterns in)-.05 F F2(GLOBIGNORE)108 208.8 Q F0 .147 (is performed without re)2.397 F -.05(ga)-.15 G .147(rd to case.).05 F -.146(The \214lenames)5.146 F F3 -.63(``)2.646 G -.55(.').63 G(')-.08 E -F0(and)5.146 E F3 -.63(``)2.646 G(..).63 E -.63('')-.55 G F0 .146 -(are al)5.776 F -.1(wa)-.1 G .146(ys ignored when).1 F F1(GLOBIGNORE)108 -172.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 F1(GLOBIGNORE)3.327 E F0 +.146(The \214lenames)5.146 F F1 -.63(``)2.646 G -.55(.').63 G(')-.08 E +F0(and)5.146 E F1 -.63(``)2.646 G(..).63 E -.63('')-.55 G F0 .146 +(are al)5.776 F -.1(wa)-.1 G .146(ys ignored when).1 F F2(GLOBIGNORE)108 +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 .683(enabling the)108 184.8 R F3(dotglob)3.183 E F0 .682 +-.25 F .683(enabling the)108 232.8 R F1(dotglob)3.183 E F0 .682 (shell option, so all other \214lenames be)3.183 F .682(ginning with a) --.15 F F3 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.) -5.682 F 2.282 -.8(To g)5.682 H .682(et the old).8 F(beha)108 196.8 Q +-.15 F F1 -.63(``)3.182 G -.55(.').63 G(')-.08 E F0 .682(will match.) +5.682 F 2.282 -.8(To g)5.682 H .682(et the old).8 F(beha)108 244.8 Q 1.184(vior of ignoring \214lenames be)-.2 F 1.184(ginning with a)-.15 F -F3 -.63(``)3.684 G -.55(.').63 G(')-.08 E F0 3.684(,m)C(ak)-3.684 E(e) --.1 E F3 -.63(``)3.684 G(.*').63 E(')-.63 E F0 1.185 -(one of the patterns in)6.185 F F1(GLOBIGNORE)3.685 E F2(.)A F0(The)108 -208.8 Q F3(dotglob)3.132 E F0 .632(option is disabled when)3.132 F F1 +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.185 +(one of the patterns in)6.185 F F2(GLOBIGNORE)3.685 E F3(.)A F0(The)108 +256.8 Q F1(dotglob)3.132 E F0 .632(option is disabled when)3.132 F F2 (GLOBIGNORE)3.132 E F0 .632(is unset.)2.882 F .631 -(The pattern matching honors the setting of)5.632 F(the)108 220.8 Q F3 -(extglob)2.5 E F0(shell option.)2.5 E F3 -.1(Pa)108 237.6 S(tter).1 E -2.5(nM)-.15 G(atching)-2.5 E F0(An)108 254.4 Q 3.138(yc)-.15 G .638(har\ +(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 266.4 R 1.12(NUL character may not occur in a pattern.) +(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 278.4 R .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 290.4 Q(.)-.65 E -(The special pattern characters ha)108 307.2 Q .3 -.15(ve t)-.2 H -(he follo).15 E(wing meanings:)-.25 E F3(*)144 324 Q F0 .377(Matches an) -180 324 R 2.877(ys)-.15 G .376(tring, including the null string.)-2.877 -F .376(When the)5.376 F F3(globstar)2.876 E F0 .376 -(shell option is enabled,)2.876 F(and)180 336 Q F3(*)3.275 E F0 .775 +-.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 .377(Matches an) +180 372 R 2.877(ys)-.15 G .376(tring, including the null string.)-2.877 +F .376(When the)5.376 F F1(globstar)2.876 E F0 .376 +(shell option is enabled,)2.876 F(and)180 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 F3(*)3.275 E F0 3.275(su)C .775 +-.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 348 R 1.058(If follo)6.058 -F 1.058(wed by a)-.25 F F3(/)3.558 E F0(,)A(tw)180 360 Q 2.5(oa)-.1 G -(djacent)-2.5 E F3(*)2.5 E F0 2.5(sw)C -(ill match only directories and subdirectories.)-2.5 E F3(?)144 372 Q F0 -(Matches an)180 372 Q 2.5(ys)-.15 G(ingle character)-2.5 E(.)-.55 E F3 -([...])144 384 Q F0 .578(Matches an)180 384 R 3.078(yo)-.15 G .578 + 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 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 .578(Matches an)180 432 R 3.078(yo)-.15 G .578 (ne of the enclosed characters.)-3.078 F 3.079(Ap)5.579 G .579 (air of characters separated by a h)-3.079 F(yphen)-.05 E .685 -(denotes a)180 396 R F4 -.15(ra)3.185 G(ng).15 E 3.184(ee)-.1 G(xpr) +(denotes a)180 444 R F4 -.15(ra)3.185 G(ng).15 E 3.184(ee)-.1 G(xpr) -3.384 E(ession)-.37 E F0 3.184(;a)C .984 -.15(ny c)-3.184 H .684 (haracter that f).15 F .684(alls between those tw)-.1 F 3.184(oc)-.1 G -.684(haracters, inclu-)-3.184 F(si)180 408 Q -.15(ve)-.25 G 3.712(,u).15 +.684(haracters, inclu-)-3.184 F(si)180 456 Q -.15(ve)-.25 G 3.712(,u).15 G 1.212(sing the current locale')-3.712 F 3.712(sc)-.55 G 1.212 (ollating sequence and character set, is matched.)-3.712 F 1.213(If the) -6.213 F 1.124(\214rst character follo)180 420 R 1.124(wing the)-.25 F F3 -([)3.624 E F0 1.124(is a)3.624 F F3(!)3.624 E F0 1.124(or a)6.124 F F3 +6.213 F 1.124(\214rst character follo)180 468 R 1.124(wing the)-.25 F F1 +([)3.624 E F0 1.124(is a)3.624 F F1(!)3.624 E F0 1.124(or a)6.124 F F1 (^)3.623 E F0 1.123(then an)3.623 F 3.623(yc)-.15 G 1.123 (haracter not enclosed is matched.)-3.623 F .894 -(The sorting order of characters in range e)180 432 R .895 +(The sorting order of characters in range e)180 480 R .895 (xpressions is determined by the current locale)-.15 F .376(and the v) -180 444 R .376(alues of the)-.25 F F1(LC_COLLA)2.875 E(TE)-.855 E F0(or) -2.625 E F1(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 +180 492 R .376(alues of the)-.25 F F2(LC_COLLA)2.875 E(TE)-.855 E F0(or) +2.625 E F2(LC_ALL)2.875 E F0 .375(shell v)2.625 F .375 (ariables, if set.)-.25 F 1.975 -.8(To o)5.375 H .375(btain the tra-).8 -F .067(ditional interpretation of range e)180 456 R .067 -(xpressions, where)-.15 F F3([a\255d])2.567 E F0 .068(is equi)2.568 F --.25(va)-.25 G .068(lent to).25 F F3([abcd])2.568 E F0 2.568(,s)C .068 -(et v)-2.568 F(alue)-.25 E .157(of the)180 468 R F3(LC_ALL)2.657 E F0 -.157(shell v)2.657 F .157(ariable to)-.25 F F3(C)2.657 E F0 2.657(,o)C -2.657(re)-2.657 G .157(nable the)-2.657 F F3(globasciiranges)2.657 E F0 -.156(shell option.)2.656 F(A)5.156 E F32.656 E F0(may)2.656 E .193(\ +F .067(ditional interpretation of range e)180 504 R .067 +(xpressions, where)-.15 F F1([a\255d])2.567 E F0 .068(is equi)2.568 F +-.25(va)-.25 G .068(lent to).25 F F1([abcd])2.568 E F0 2.568(,s)C .068 +(et v)-2.568 F(alue)-.25 E .157(of the)180 516 R F1(LC_ALL)2.657 E F0 +.157(shell v)2.657 F .157(ariable to)-.25 F F1(C)2.657 E F0 2.657(,o)C +2.657(re)-2.657 G .157(nable the)-2.657 F F1(globasciiranges)2.657 E F0 +.156(shell option.)2.656 F(A)5.156 E F12.656 E F0(may)2.656 E .193(\ be matched by including it as the \214rst or last character in the set.) -180 480 R(A)5.193 E F3(])2.693 E F0 .194(may be matched by)2.693 F -(including it as the \214rst character in the set.)180 492 Q -.4(Wi)180 -510 S(thin).4 E F3([)3.071 E F0(and)3.071 E F3(])3.071 E F0(,)A F4 -.15 +180 528 R(A)5.193 E F1(])2.693 E F0 .194(may be matched by)2.693 F +(including it as the \214rst character in the set.)180 540 Q -.4(Wi)180 +558 S(thin).4 E F1([)3.071 E F0(and)3.071 E F1(])3.071 E F0(,)A F4 -.15 (ch)3.071 G(ar).15 E .571(acter classes)-.15 F F0 .571 -(can be speci\214ed using the syntax)3.071 F F3([:)3.07 E F4(class)A F3 +(can be speci\214ed using the syntax)3.071 F F1([:)3.07 E F4(class)A F1 (:])A F0 3.07(,w)C(here)-3.07 E F4(class)3.07 E F0(is one of the follo) -180 522 Q(wing classes de\214ned in the POSIX standard:)-.25 E F3 8.173 -(alnum alpha ascii blank cntrl digit graph lo)180 534 R 8.173 -(wer print punct space)-.1 F 5(upper w)180 546 R 5(ord xdigit)-.1 F F0 -4.29(Ac)180 558 S 1.789(haracter class matches an)-4.29 F 4.289(yc)-.15 -G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F3 -.1 +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 582 R 8.173 +(wer print punct space)-.1 F 5(upper w)180 594 R 5(ord xdigit)-.1 F F0 +4.29(Ac)180 606 S 1.789(haracter class matches an)-4.29 F 4.289(yc)-.15 +G 1.789(haracter belonging to that class.)-4.289 F(The)6.789 E F1 -.1 (wo)4.289 G(rd).1 E F0(character)4.289 E -(class matches letters, digits, and the character _.)180 570 Q -.4(Wi) -180 588 S(thin).4 E F3([)4.536 E F0(and)4.536 E F3(])4.536 E F0 4.536 +(class matches letters, digits, and the character _.)180 618 Q -.4(Wi) +180 636 S(thin).4 E F1([)4.536 E F0(and)4.536 E F1(])4.536 E F0 4.536 (,a)C(n)-4.536 E F4 2.036(equivalence class)4.536 F F0 2.037 -(can be speci\214ed using the syntax)4.536 F F3([=)4.537 E F4(c)A F3(=]) +(can be speci\214ed using the syntax)4.536 F F1([=)4.537 E F4(c)A F1(=]) A F0 4.537(,w)C(hich)-4.537 E .125(matches all characters with the same\ - collation weight \(as de\214ned by the current locale\) as)180 600 R -(the character)180 612 Q F4(c)2.5 E F0(.)A -.4(Wi)180 630 S(thin).4 E F3 -([)2.5 E F0(and)2.5 E F3(])2.5 E F0 2.5(,t)C(he syntax)-2.5 E F3([.)2.5 -E F4(symbol)A F3(.])A F0(matches the collating symbol)2.5 E F4(symbol) -2.5 E F0(.)A .704(If the)108 646.8 R F3(extglob)3.204 E F0 .705 -(shell option is enabled using the)3.204 F F3(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 .704(If the)108 694.8 R F1(extglob)3.204 E F0 .705 +(shell option is enabled using the)3.204 F F1(shopt)3.205 E F0 -.2(bu) 3.205 G .705(iltin, se).2 F -.15(ve)-.25 G .705(ral e).15 F .705 (xtended pattern matching operators)-.15 F .256(are recognized.)108 -658.8 R .256(In the follo)5.256 F .256(wing description, a)-.25 F F4 +706.8 R .256(In the follo)5.256 F .256(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 F3(|)2.755 E +(is a list of one or more patterns separated by a)2.755 F F1(|)2.755 E F0(.)A(Composite patterns may be formed using one or more of the follo) -108 670.8 Q(wing sub-patterns:)-.25 E F3(?\()144 694.8 Q F4 -(pattern-list).833 E F3(\)).833 E F0 -(Matches zero or one occurrence of the gi)180 706.8 Q -.15(ve)-.25 G 2.5 -(np).15 G(atterns)-2.5 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E -(26)193.45 E 0 Cg EP +108 718.8 Q(wing sub-patterns:)-.25 E(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(26)194.555 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 more occurrences 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 one 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 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 an)180 168 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 .968(Complicated e)108 -184.8 R .968(xtended pattern matching ag)-.15 F .968 -(ainst long strings is slo)-.05 F 2.269 -.65(w, e)-.25 H .969 +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 +.968(Complicated e)108 208.8 R .968(xtended pattern matching ag)-.15 F +.968(ainst long strings is slo)-.05 F 2.269 -.65(w, e)-.25 H .969 (specially when the patterns contain).65 F 1.23 -(alternations and the strings contain multiple matches.)108 196.8 R 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 -208.8 Q(aster)-.1 E(.)-.55 E F1(Quote Remo)87 225.6 Q -.1(va)-.1 G(l).1 -E F0 1.112(After the preceding e)108 237.6 R 1.112 +232.8 Q(aster)-.1 E(.)-.55 E F1(Quote Remo)87 249.6 Q -.1(va)-.1 G(l).1 +E F0 1.112(After the preceding e)108 261.6 R 1.112 (xpansions, all unquoted occurrences of the characters)-.15 F F1(\\) 3.613 E F0(,)A F1<08>3.613 E F0 3.613(,a)C(nd)-3.613 E F1(")4.446 E F0 -1.113(that did not result)4.446 F(from one of the abo)108 249.6 Q .3 +1.113(that did not result)4.446 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 266.4 Q F0 .545 -(Before a command is e)108 278.4 R -.15(xe)-.15 G .545 +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 290.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 302.4 Q 1.02(ferent \214les, and can change the \214les \ +-.25 F(dif)108 326.4 Q 1.02(ferent \214les, and can change the \214les \ the command reads from and writes to.)-.25 F 1.019 (Redirection may also be)6.019 F .215 -(used to modify \214le handles in the current shell e)108 314.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 .876(may precede or appear an)108 -326.4 R .876(ywhere within a)-.15 F F2 .875(simple command)3.715 F F0 +350.4 R .876(ywhere within a)-.15 F F2 .875(simple command)3.715 F F0 .875(or may follo)4.145 F 3.375(wa)-.25 G F2(command)A F0 5.875(.R).77 G -.875(edirections are)-5.875 F(processed in the order the)108 338.4 Q 2.5 +.875(edirections are)-5.875 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 355.2 R .772(ord of)-.1 F .293(the form {) -108 367.2 R F2(varname)A F0 2.793(}. In)B .293 +stead be preceded by a w)108 379.2 R .772(ord of)-.1 F .293(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.179<618c>108 379.2 +(xcept >&- and <&-, the shell will allocate)-.15 F 3.179<618c>108 403.2 S .679(le descriptor greater than or equal to 10 and assign it to)-3.179 F F2(varname)3.179 E F0 5.679(.I)C 3.179(f>)-5.679 G .679 -(&- or <&- is preceded by {)-3.179 F F2(var)A(-)-.2 E(name)108 391.2 Q +(&- or <&- is preceded by {)-3.179 F F2(var)A(-)-.2 E(name)108 415.2 Q F0 .6(}, the v)B .6(alue of)-.25 F F2(varname)3.1 E F0 .599 (de\214nes the \214le descriptor to close.)3.1 F .599(If {)5.599 F F2 (varname)A F0 3.099(}i)C 3.099(ss)-3.099 G .599 -(upplied, the redirection)-3.099 F 1.238(persists be)108 403.2 R 1.238 +(upplied, the redirection)-3.099 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 415.2 Q .284(In the follo)108 432 R .283(wing description\ +(himself.)108 439.2 Q .284(In the follo)108 456 R .283(wing description\ s, if the \214le descriptor number is omitted, and the \214rst characte\ -r of the redirect-)-.25 F .512(ion operator is)108 444 R F1(<)3.012 E F0 +r of the redirect-)-.25 F .512(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 456 Q F1(>)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 .825(The w)108 472.8 R .825(ord follo)-.1 F .824 +-2.5 E .825(The w)108 496.8 R .825(ord follo)-.1 F .824 (wing the redirection operator in the follo)-.25 F .824 (wing descriptions, unless otherwise noted, is sub-)-.25 F .462 -(jected to brace e)108 484.8 R .462(xpansion, tilde e)-.15 F .463 +(jected to brace e)108 508.8 R .462(xpansion, tilde e)-.15 F .463 (xpansion, parameter and v)-.15 F .463(ariable e)-.25 F .463 -(xpansion, command substitution, arith-)-.15 F .867(metic e)108 496.8 R +(xpansion, command substitution, arith-)-.15 F .867(metic e)108 520.8 R .867(xpansion, quote remo)-.15 F -.25(va)-.15 G .867(l, pathname e).25 F .867(xpansion, and w)-.15 F .867(ord splitting.)-.1 F .867(If it e)5.867 -F .866(xpands to more than one)-.15 F -.1(wo)108 508.8 S(rd,).1 E F1 +F .866(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 525.6 Q -.15 -(Fo)5 G 2.5(re).15 G(xample, the command)-2.65 E(ls)144 542.4 Q F1(>)2.5 +(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 559.2 -Q F2(dirlist)2.5 E F0 2.5(,w).68 G(hile the command)-2.5 E(ls 2)144 576 +(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 592.8 R F2(dirlist)3.027 +(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 604.8 Q(as redirected to)-.1 E -F2(dirlist)2.5 E F0(.).68 E F1(Bash)108 621.6 Q F0 .599(handles se)3.099 +(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 .599(handles se)3.099 F -.15(ve)-.25 G .599(ral \214lenames specially when the).15 F 3.099(ya) -.15 G .598(re used in redirections, as described in the follo)-3.099 F -(wing)-.25 E 3.477(table. If)108 633.6 R .977 +(wing)-.25 E 3.477(table. If)108 657.6 R .977 (the operating system on which)3.477 F F1(bash)3.478 E F0 .978 (is running pro)3.478 F .978 (vides these special \214les, bash will use them;)-.15 F -(otherwise it will emulate them internally with the beha)108 645.6 Q -(vior described belo)-.2 E -.65(w.)-.25 G F1(/de)144 662.4 Q(v/fd/)-.15 -E F2(fd)A F0(If)180 674.4 Q F2(fd)2.5 E F0(is a v)2.5 E(alid inte)-.25 E +(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 F1(/de)144 686.4 Q(v/stdin)-.15 E F0 -(File descriptor 0 is duplicated.)180 698.4 Q(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(27)193.45 E 0 Cg EP +(is duplicated.)2.5 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(27) +194.555 E 0 Cg EP %%Page: 28 28 %%BeginPageSetup BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F (Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(/de)144 84 Q(v/stdout)-.15 E F0(File descriptor 1 is duplicated.)180 -96 Q F1(/de)144 108 Q(v/stderr)-.15 E F0 -(File descriptor 2 is duplicated.)180 120 Q F1(/de)144 132 Q(v/tcp/)-.15 -E/F2 10/Times-Italic@0 SF(host)A F1(/)A F2(port)A F0(If)180 144 Q F2 -(host)2.997 E F0 .497(is a v)2.997 F .497 +SF(/de)144 84 Q(v/stdin)-.15 E F0(File descriptor 0 is duplicated.)180 +96 Q F1(/de)144 108 Q(v/stdout)-.15 E F0 +(File descriptor 1 is duplicated.)180 120 Q F1(/de)144 132 Q(v/stderr) +-.15 E F0(File descriptor 2 is duplicated.)180 144 Q F1(/de)144 156 Q +(v/tcp/)-.15 E/F2 10/Times-Italic@0 SF(host)A F1(/)A F2(port)A F0(If)180 +168 Q F2(host)2.997 E F0 .497(is a v)2.997 F .497 (alid hostname or Internet address, and)-.25 F F2(port)2.996 E F0 .496 (is an inte)2.996 F .496(ger port number or ser)-.15 F(-)-.2 E -(vice name,)180 156 Q F1(bash)2.5 E F0 +(vice name,)180 180 Q F1(bash)2.5 E F0 (attempts to open the corresponding TCP sock)2.5 E(et.)-.1 E F1(/de)144 -168 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 180 Q F2(host) +192 Q(v/udp/)-.15 E F2(host)A F1(/)A F2(port)A F0(If)180 204 Q F2(host) 2.996 E F0 .496(is a v)2.996 F .496 (alid hostname or Internet address, and)-.25 F F2(port)2.997 E F0 .497 (is an inte)2.997 F .497(ger port number or ser)-.15 F(-)-.2 E -(vice name,)180 192 Q F1(bash)2.5 E F0 +(vice name,)180 216 Q F1(bash)2.5 E F0 (attempts to open the corresponding UDP sock)2.5 E(et.)-.1 E 2.5(Af)108 -208.8 S(ailure to open or create a \214le causes the redirection to f) +232.8 S(ailure to open or create a \214le causes the redirection to f) -2.6 E(ail.)-.1 E .947(Redirections using \214le descriptors greater th\ -an 9 should be used with care, as the)108 225.6 R 3.446(ym)-.15 G .946 +an 9 should be used with care, as the)108 249.6 R 3.446(ym)-.15 G .946 (ay con\215ict with \214le)-3.446 F -(descriptors the shell uses internally)108 237.6 Q(.)-.65 E F1(Redir)87 -254.4 Q(ecting Input)-.18 E F0 .391 +(descriptors the shell uses internally)108 261.6 Q(.)-.65 E F1(Redir)87 +278.4 Q(ecting Input)-.18 E F0 .391 (Redirection of input causes the \214le whose name results from the e) -108 266.4 R .391(xpansion of)-.15 F F2(wor)3.231 E(d)-.37 E F0 .391 -(to be opened for read-)3.661 F(ing on \214le descriptor)108 278.4 Q F2 +108 290.4 R .391(xpansion of)-.15 F F2(wor)3.231 E(d)-.37 E F0 .391 +(to be opened for read-)3.661 F(ing on \214le descriptor)108 302.4 Q F2 (n)2.5 E F0 2.5(,o).24 G 2.5(rt)-2.5 G (he standard input \(\214le descriptor 0\) if)-2.5 E F2(n)2.86 E F0 (is not speci\214ed.)2.74 E -(The general format for redirecting input is:)108 295.2 Q([)144 312 Q F2 -(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 328.8 Q(ecting Output) +(The general format for redirecting input is:)108 319.2 Q([)144 336 Q F2 +(n)A F0(])A F1(<)A F2(wor)A(d)-.37 E F1(Redir)87 352.8 Q(ecting Output) -.18 E F0 .175 (Redirection of output causes the \214le whose name results from the e) -108 340.8 R .174(xpansion of)-.15 F F2(wor)3.014 E(d)-.37 E F0 .174 -(to be opened for writ-)3.444 F .824(ing on \214le descriptor)108 352.8 +108 364.8 R .174(xpansion of)-.15 F F2(wor)3.014 E(d)-.37 E F0 .174 +(to be opened for writ-)3.444 F .824(ing on \214le descriptor)108 376.8 R F2(n)3.324 E F0 3.324(,o).24 G 3.324(rt)-3.324 G .824 (he standard output \(\214le descriptor 1\) if)-3.324 F F2(n)3.684 E F0 .824(is not speci\214ed.)3.564 F .825(If the \214le does not)5.825 F --.15(ex)108 364.8 S(ist it is created; if it does e).15 E +-.15(ex)108 388.8 S(ist it is created; if it does e).15 E (xist it is truncated to zero size.)-.15 E -(The general format for redirecting output is:)108 381.6 Q([)144 398.4 Q +(The general format for redirecting output is:)108 405.6 Q([)144 422.4 Q F2(n)A F0(])A F1(>)A F2(wor)A(d)-.37 E F0 .155 -(If the redirection operator is)108 415.2 R F1(>)2.655 E F0 2.655(,a)C +(If the redirection operator is)108 439.2 R F1(>)2.655 E F0 2.655(,a)C .155(nd the)-2.655 F F1(noclob)2.655 E(ber)-.1 E F0 .154(option to the) 2.654 F F1(set)2.654 E F0 -.2(bu)2.654 G .154 -(iltin has been enabled, the redirection).2 F .657(will f)108 427.2 R +(iltin has been enabled, the redirection).2 F .657(will f)108 451.2 R .657(ail if the \214le whose name results from the e)-.1 F .658 (xpansion of)-.15 F F2(wor)3.158 E(d)-.37 E F0 -.15(ex)3.158 G .658 (ists and is a re).15 F .658(gular \214le.)-.15 F .658(If the redi-) -5.658 F .409(rection operator is)108 439.2 R F1(>|)2.909 E F0 2.909(,o)C +5.658 F .409(rection operator is)108 463.2 R F1(>|)2.909 E F0 2.909(,o)C 2.909(rt)-2.909 G .409(he redirection operator is)-2.909 F F1(>)2.909 E F0 .409(and the)2.909 F F1(noclob)2.909 E(ber)-.1 E F0 .409 (option to the)2.909 F F1(set)2.909 E F0 -.2(bu)2.908 G .408 (iltin command).2 F(is not enabled, the redirection is attempted e)108 -451.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by) +475.2 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he \214le named by) -2.5 E F2(wor)2.5 E(d)-.37 E F0 -.15(ex)2.5 G(ists.).15 E F1 -.25(Ap)87 -468 S(pending Redir).25 E(ected Output)-.18 E F0 .641 -(Redirection of output in this f)108 480 R .642 +492 S(pending Redir).25 E(ected Output)-.18 E F0 .641 +(Redirection of output in this f)108 504 R .642 (ashion causes the \214le whose name results from the e)-.1 F .642 (xpansion of)-.15 F F2(wor)3.482 E(d)-.37 E F0 .642(to be)3.912 F .474 -(opened for appending on \214le descriptor)108 492 R F2(n)2.974 E F0 +(opened for appending on \214le descriptor)108 516 R F2(n)2.974 E F0 2.974(,o).24 G 2.974(rt)-2.974 G .474 (he standard output \(\214le descriptor 1\) if)-2.974 F F2(n)3.333 E F0 .473(is not speci\214ed.)3.213 F(If)5.473 E(the \214le does not e)108 -504 Q(xist it is created.)-.15 E -(The general format for appending output is:)108 520.8 Q([)144 537.6 Q -F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 554.4 Q +528 Q(xist it is created.)-.15 E +(The general format for appending output is:)108 544.8 Q([)144 561.6 Q +F2(n)A F0(])A F1(>>)A F2(wor)A(d)-.37 E F1(Redir)87 578.4 Q (ecting Standard Output and Standard Err)-.18 E(or)-.18 E F0 .248 -(This construct allo)108 566.4 R .249(ws both the standard output \(\ +(This construct allo)108 590.4 R .249(ws both the standard output \(\ \214le descriptor 1\) and the standard error output \(\214le descrip-) -.25 F(tor 2\) to be redirected to the \214le whose name is the e)108 -578.4 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E -(There are tw)108 595.2 Q 2.5(of)-.1 G +602.4 Q(xpansion of)-.15 E F2(wor)2.5 E(d)-.37 E F0(.).77 E +(There are tw)108 619.2 Q 2.5(of)-.1 G (ormats for redirecting standard output and standard error:)-2.5 E F1 -(&>)144 612 Q F2(wor)A(d)-.37 E F0(and)108 624 Q F1(>&)144 636 Q F2(wor) -A(d)-.37 E F0(Of the tw)108 652.8 Q 2.5(of)-.1 G +(&>)144 636 Q F2(wor)A(d)-.37 E F0(and)108 648 Q F1(>&)144 660 Q F2(wor) +A(d)-.37 E F0(Of the tw)108 676.8 Q 2.5(of)-.1 G (orms, the \214rst is preferred.)-2.5 E(This is semantically equi)5 E --.25(va)-.25 G(lent to).25 E F1(>)144 669.6 Q F2(wor)A(d)-.37 E F0(2)2.5 -E F1(>&)A F0(1)A .115(When using the second form,)108 686.4 R F2(wor) +-.25(va)-.25 G(lent to).25 E F1(>)144 693.6 Q F2(wor)A(d)-.37 E F0(2)2.5 +E F1(>&)A F0(1)A .115(When using the second form,)108 710.4 R F2(wor) 2.614 E(d)-.37 E F0 .114(may not e)2.614 F .114(xpand to a number or) -.15 F F12.614 E F0 5.114(.I)C 2.614(fi)-5.114 G 2.614(td)-2.614 G -.114(oes, other redirection operators)-2.614 F(apply \(see)108 698.4 Q +.114(oes, other redirection operators)-2.614 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 5.0)72 768 Q -(2018 March 15)144.29 E(28)193.45 E 0 Cg EP +(2018 August 7)145.395 E(28)194.555 E 0 Cg EP %%Page: 29 29 %%BeginPageSetup BP @@ -3779,7 +3805,7 @@ F0 2.754<2c8c>C .254(le descriptor)-2.754 F F2(n)3.114 E F0 .254 3.466 E F0 3.466(,t)C .965 (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 5.0)72 768 Q -(2018 March 15)144.29 E(29)193.45 E 0 Cg EP +(2018 August 7)145.395 E(29)194.555 E 0 Cg EP %%Page: 30 30 %%BeginPageSetup BP @@ -3903,8 +3929,8 @@ F1(#)3.033 E F0 .532(is updated to re\215ect the change.)3.033 F .532 .532(The \214rst ele-)5.532 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 5.0)72 768 Q(2018 March 15)144.29 -E(30)193.45 E 0 Cg EP +-.15(xe)-.15 G(cuting.).15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 +E(30)194.555 E 0 Cg EP %%Page: 31 31 %%BeginPageSetup BP @@ -4044,7 +4070,7 @@ E F0 -.25(va)2.871 G .371 -.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 691.2 Q(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(31)193.45 E 0 Cg EP +(2018 August 7)145.395 E(31)194.555 E 0 Cg EP %%Page: 32 32 %%BeginPageSetup BP @@ -4144,7 +4170,7 @@ R 3.906(Al)6.406 G 1.406(eading 0x or 0X denotes he)-3.906 F(xadecimal.) F2(<)3.595 E F0(and)3.595 E F2(>)3.595 E F0 1.095(operators sort le) 3.595 F 1.095(xicographically using the current locale.)-.15 F(The)6.096 E F2(test)3.596 E F0(com-)3.596 E(mand sorts using ASCII ordering.)108 -714 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(32)193.45 E 0 Cg EP +714 Q(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(32)194.555 E 0 Cg EP %%Page: 33 33 %%BeginPageSetup BP @@ -4234,7 +4260,7 @@ F0(sorts before)2.5 E F2(string2)2.5 E F0(le)2.5 E(xicographically)-.15 E(.)-.65 E F2(string1)108 679.2 Q F1(>)2.5 E F2(string2)2.5 E F0 -.35 (Tr)144 691.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(GNU Bash 5.0) -72 768 Q(2018 March 15)144.29 E(33)193.45 E 0 Cg EP +72 768 Q(2018 August 7)145.395 E(33)194.555 E 0 Cg EP %%Page: 34 34 %%BeginPageSetup BP @@ -4360,8 +4386,8 @@ ful, or if the command name contains one or more slashes, the shell e) (subshell reinitializes itself, so that the ef)108 722.4 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(GNU Bash 5.0)72 768 Q(2018 March 15) -144.29 E(34)193.45 E 0 Cg EP +(andle the script, with)-2.83 F(GNU Bash 5.0)72 768 Q(2018 August 7) +145.395 E(34)194.555 E 0 Cg EP %%Page: 35 35 %%BeginPageSetup BP @@ -4450,7 +4476,7 @@ G 2.858(cation. Builtin).2 F .358(commands that are in)2.858 F -.2(vo) 640.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 F13.876 E F0 1.376(option from the parent)3.876 F 2.5(shell. When) -108 652.8 R(not in)2.5 E F5(posix)2.5 E F0(mode,)2.5 E F1(bash)2.5 E F0 +108 652.8 R(not in)2.5 E F5(posix mode)2.5 E F0(,)A F1(bash)2.5 E F0 (clears the)2.5 E F12.5 E F0(option in such subshells.)2.5 E .404 (If a command is follo)108 669.6 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 @@ -4459,7 +4485,7 @@ F13.876 E F0 1.376(option from the parent)3.876 F 2.5(shell. When) (.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 693.6 Q(GNU Bash 5.0)72 768 -Q(2018 March 15)144.29 E(35)193.45 E 0 Cg EP +Q(2018 August 7)145.395 E(35)194.555 E 0 Cg EP %%Page: 36 36 %%BeginPageSetup BP @@ -4595,8 +4621,8 @@ G .93(rom the)-3.43 F 1.357(jobs table with the)108 686.4 R F3(diso) (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 -727.2 Q(xits.)-.15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(36) -193.45 E 0 Cg EP +727.2 Q(xits.)-.15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(36) +194.555 E 0 Cg EP %%Page: 37 37 %%BeginPageSetup BP @@ -4738,7 +4764,8 @@ R -.15(ve)-.25 G 2.631(raj).15 G .131(ob changes state.)-2.631 F (reports such changes immediately)2.648 F 5.147(.A)-.65 G .447 -.15 (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 March 15)144.29 E(37)193.45 E 0 Cg EP +-.15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(37)194.555 E 0 Cg +EP %%Page: 38 38 %%BeginPageSetup BP @@ -4839,7 +4866,8 @@ story \214le \(see)108 650.4 R F3(HIST)4.085 E(OR)-.162 E(Y)-.315 E F0 (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 March 15)144.29 E(38)193.45 E 0 Cg EP +-.25 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(38)194.555 E 0 Cg +EP %%Page: 39 39 %%BeginPageSetup BP @@ -4964,8 +4992,8 @@ E F4(macr)2.66 E(o)-.45 E F0(,)A F4 -.1(ke)2.66 G(yname)-.2 E F0 .161 .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 March 15) -144.29 E(39)193.45 E 0 Cg EP +(Control-o: "> output")144 724.8 Q(GNU Bash 5.0)72 768 Q(2018 August 7) +145.395 E(39)194.555 E 0 Cg EP %%Page: 40 40 %%BeginPageSetup BP @@ -5060,7 +5088,8 @@ E F0 2.51(,r)C .01(eadline ne)-2.51 F -.15(ve)-.25 G(r).15 E .94 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 March 15)144.29 E(40)193.45 E 0 Cg EP +-2.5 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(40)194.555 E 0 Cg +EP %%Page: 41 41 %%BeginPageSetup BP @@ -5165,8 +5194,8 @@ R -.15(ve)-.25 G 5.622(.T).15 G .622(he v)-5.622 F .622(alue is e)-.25 F (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 March 15)144.29 E(41)193.45 E 0 Cg -EP +144 720 Q(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(41)194.555 E 0 +Cg EP %%Page: 42 42 %%BeginPageSetup BP @@ -5276,8 +5305,8 @@ E F2 -.37(re)2.551 G(adline).37 E F0 .051(will w)2.551 F .051 .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(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(42)193.45 E 0 -Cg EP +(*)A F0(\).)A(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(42)194.555 E +0 Cg EP %%Page: 43 43 %%BeginPageSetup BP @@ -5382,8 +5411,8 @@ F .186(last line of the primary prompt when vi editing mode is acti)144 -.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 March 15)144.29 E(43)193.45 E 0 Cg -EP +144 708 Q(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(43)194.555 E 0 +Cg EP %%Page: 44 44 %%BeginPageSetup BP @@ -5483,7 +5512,7 @@ Q F0 .356(This directi)144 684 R .656 -.15(ve t)-.25 H(ak).15 E .356 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 March 15)144.29 E(44)193.45 E 0 Cg EP +768 Q(2018 August 7)145.395 E(44)194.555 E 0 Cg EP %%Page: 45 45 %%BeginPageSetup BP @@ -5587,7 +5616,7 @@ idth.)-.05 E F1(next\255scr)108 700.8 Q(een\255line)-.18 E F0 .638 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 March 15)144.29 E(45)193.45 E 0 Cg EP +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(45)194.555 E 0 Cg EP %%Page: 46 46 %%BeginPageSetup BP @@ -5673,7 +5702,7 @@ F .622(ord on the pre)-.1 F .622(vious line\))-.25 F .794(at point.)144 (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 March 15)144.29 E(46)193.45 E 0 Cg EP +(2018 August 7)145.395 E(46)194.555 E 0 Cg EP %%Page: 47 47 %%BeginPageSetup BP @@ -5773,7 +5802,7 @@ G .779(nsert characters lik)-3.279 F(e)-.1 E F1(C\255q)3.278 E F0 3.278 (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 March 15)144.29 E(47)193.45 E 0 Cg EP +(2018 August 7)145.395 E(47)194.555 E 0 Cg EP %%Page: 48 48 %%BeginPageSetup BP @@ -5867,8 +5896,8 @@ F 5.365(.T)-.65 G .365(he killed te)-5.365 F .365(xt is sa)-.15 F -.15 -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 March 15)144.29 E(48) -193.45 E 0 Cg EP +-.15 E(gion.)-.15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(48) +194.555 E 0 Cg EP %%Page: 49 49 %%BeginPageSetup BP @@ -5970,7 +5999,7 @@ F1(delete\255char\255or\255list)108 633.6 Q F0 .234 -.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 March 15)144.29 E(49)193.45 E 0 Cg EP +768 Q(2018 August 7)145.395 E(49)194.555 E 0 Cg EP %%Page: 50 50 %%BeginPageSetup BP @@ -6060,7 +6089,7 @@ SF(ESC)5 E F1(f)2.25 E F0(is equi)2.5 E -.25(va)-.25 G(lent to).25 E F1 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 729.6 Q(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(50)193.45 E 0 Cg EP +(2018 August 7)145.395 E(50)194.555 E 0 Cg EP %%Page: 51 51 %%BeginPageSetup BP @@ -6167,7 +6196,8 @@ 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(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(51)193.45 E 0 Cg EP +-.25 F(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(51)194.555 E 0 Cg +EP %%Page: 52 52 %%BeginPageSetup BP @@ -6307,7 +6337,7 @@ ode as the list of possible completions.)108 660 Q .246(If the pre)108 (when the compspec w)2.962 F .462(as de\214ned, directory name com-)-.1 F(pletion is attempted and an)108 717.6 Q 2.5(ym)-.15 G (atches are added to the results of the other actions.)-2.5 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(52)193.45 E 0 Cg EP +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(52)194.555 E 0 Cg EP %%Page: 53 53 %%BeginPageSetup BP @@ -6439,7 +6469,7 @@ F0 3.257(lines. If)3.007 F F5(HISTFILESIZE)3.257 E F0 .757 (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 717.6 Q (vide access to the history list.)-.15 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(53)193.45 E 0 Cg EP +(2018 August 7)145.395 E(53)194.555 E 0 Cg EP %%Page: 54 54 %%BeginPageSetup BP @@ -6569,8 +6599,8 @@ Q F0 1.607(Start a history substitution, e)144 638.4 R 1.607 (This is a synon)5 E(ym for `!\2551'.)-.15 E F2(!)108 698.4 Q F4(string) A F0 .865(Refer to the most recent command preceding the current positi\ on in the history list starting with)144 698.4 R F4(string)144 710.4 Q -F0(.).22 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(54)193.45 E 0 Cg -EP +F0(.).22 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(54)194.555 E 0 +Cg EP %%Page: 55 55 %%BeginPageSetup BP @@ -6690,8 +6720,8 @@ F1(let)2.961 E F0 2.961(,a)C(nd)-2.961 E F1(shift)2.961 E F0 -.2(bu) (guments be)-.18 F .26(ginning with)-.15 F F12.76 E F0 .261 (without requiring)2.76 F F12.761 E F0 5.261(.O)C .261(ther b) -5.261 F .261(uiltins that accept ar)-.2 F .261(guments b)-.18 F .261 -(ut are not)-.2 F(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(55)193.45 -E 0 Cg EP +(ut are not)-.2 F(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(55) +194.555 E 0 Cg EP %%Page: 56 56 %%BeginPageSetup BP @@ -6826,7 +6856,7 @@ Q F0(List current)180 685.2 Q F1 -.18(re)2.5 G(adline).18 E F0 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 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 March 15)144.29 E(56)193.45 E 0 Cg EP +Q(2018 August 7)145.395 E(56)194.555 E 0 Cg EP %%Page: 57 57 %%BeginPageSetup BP @@ -6959,7 +6989,7 @@ F0 .468(will return an unsuccessful status.)2.968 F .468(On systems) 144 720 R .71(gument of)-.18 F F13.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 -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(57)193.45 E 0 Cg EP +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(57)194.555 E 0 Cg EP %%Page: 58 58 %%BeginPageSetup BP @@ -7021,2609 +7051,2633 @@ em directly from a completion speci\214cation with the same \215ags.)144 (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 F2 -(complete)108 386.4 Q F0([)3.728 E F2(\255abcdefgjksuv)A F0 3.728(][)C -F2-3.728 E F3(comp-option)3.728 E F0 3.728(][)C F2(\255DE)-3.728 E -F0 3.728(][)C F2-3.728 E F3(action)3.728 E F0 3.728(][)C F2 --3.728 E F3(globpat)3.728 E F0 3.729(][)C F2-3.729 E F3(wor)3.729 -E(dlist)-.37 E F0 3.729(][)C F2-3.729 E F3(func-)3.729 E(tion)108 -398.4 Q F0 2.5(][)C F2-2.5 E F3(command)2.5 E F0(])A([)144 410.4 Q -F2A F3(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F3(pr)2.5 E -(e\214x)-.37 E F0 2.5(][)C F2-2.5 E F3(suf)2.5 E<8c78>-.18 E F0(]) -A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2(complete \255pr)108 -422.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 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 F23.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 F22.81 E F0 .31(option remo)2.81 F -.15(ve) --.15 G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F3 -(name)2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E -F3(name)2.81 E F0(s)A 1.346 -(are supplied, all completion speci\214cations.)144 470.4 R(The)6.347 E -F23.847 E F0 1.347(option indicates that the remaining options) -3.847 F .5(and actions should apply to the `)144 482.4 R(`def)-.74 E +(complete)108 386.4 Q F0([)3.404 E F2(\255abcdefgjksuv)A F0 3.404(][)C +F2-3.404 E F3(comp-option)3.404 E F0 3.404(][)C F2(\255DEI)-3.404 +E F0 3.404(][)C F2-3.404 E F3(action)3.404 E F0 3.404(][)C F2 +-3.404 E F3(globpat)3.404 E F0 3.404(][)C F2-3.404 E F3(wor) +3.404 E(dlist)-.37 E F0 3.405(][)C F2-3.405 E F3(func-)3.405 E +(tion)108 398.4 Q F0 2.5(][)C F2-2.5 E F3(command)2.5 E F0(])A([) +144 410.4 Q F2A F3(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F3 +(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F2-2.5 E F3(suf)2.5 E<8c78> +-.18 E F0(])A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2 +(complete \255pr)108 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 F23.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 F22.81 E F0 .31 +(option remo)2.81 F -.15(ve)-.15 G 2.81(sac).15 G .31 +(ompletion speci\214cation for each)-2.81 F F3(name)2.81 E F0 2.81(,o)C +1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F3(name)2.81 E F0(s)A 1.207 +(are supplied, all completion speci\214cations.)144 470.4 R(The)6.207 E +F23.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 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 F23.455 E F0 .955 -(option indicates that)3.455 F .065 -(the remaining options and actions should apply to `)144 506.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 518.4 Q 1.437 +(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 +F22.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 +3.208 E F0 .708(option tak)3.208 F .708(es precedence o)-.1 F -.15 +(ve)-.15 G(r).15 E F23.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 +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 F23.207 E F0(,)A F2144 566.4 Q F0 2.603(,o)C(r) +-2.603 E F22.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 -542.4 R 1.438(ord completion is attempted is)-.1 F(described abo)144 -554.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 578.4 R .856 -.15(ve t)-.2 H .555 +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 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 F23.055 E F0(,)A F23.055 E F0 3.055 -(,a)C(nd)-3.055 E F23.055 E F0 .722(options \(and, if necessary) -144 590.4 R 3.222(,t)-.65 G(he)-3.222 E F23.222 E F0(and)3.222 E -F23.222 E F0 .723 -(options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E -(sion before the)144 602.4 Q F2(complete)2.5 E F0 -.2(bu)2.5 G -(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F2144 614.4 Q -F3(comp-option)2.5 E F0(The)184 626.4 Q F3(comp-option)2.791 E F0 .291 +(guments to the)-.18 F F23.056 E F0(,)A F23.056 E F0 3.056 +(,a)C(nd)-3.056 E F23.056 E F0 .723(options \(and, if necessary) +144 650.4 R 3.223(,t)-.65 G(he)-3.223 E F23.223 E F0(and)3.223 E +F23.223 E F0 .722 +(options\) should be quoted to protect them from e)3.223 F(xpan-)-.15 E +(sion before the)144 662.4 Q F2(complete)2.5 E F0 -.2(bu)2.5 G +(iltin is in).2 E -.2(vo)-.4 G -.1(ke).2 G(d.).1 E F2144 674.4 Q +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 638.4 Q F3 -(comp-option)5 E F0(may be one of:)2.5 E F2(bashdefault)184 650.4 Q F0 -.281(Perform the rest of the def)224 662.4 R(ault)-.1 E F2(bash)2.781 E -F0 .281(completions if the compspec generates no)2.781 F(matches.)224 -674.4 Q F2(default)184 686.4 Q F0 2.876(Use readline')224 686.4 R 5.376 -(sd)-.55 G(ef)-5.376 E 2.875 -(ault \214lename completion if the compspec generates no)-.1 F(matches.) -224 698.4 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(58)193.45 E 0 -Cg EP +(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 August 7)145.395 E(58)194.555 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(dir)184 84 Q(names)-.15 E F0(Perform directory name completion if th\ -e compspec generates no matches.)224 96 Q F1(\214lenames)184 108 Q F0 --.7(Te)224 120 S .137(ll readline that the compspec generates \214lenam\ -es, so it can perform an).7 F 2.637<798c>-.15 G(le-)-2.637 E .134 -(name\255speci\214c processing \(lik)224 132 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 144 R .45 -(Intended to be used with shell)5.45 F(functions.)224 156 Q F1(noquote) -184 168 Q F0 -.7(Te)224 168 S .814 +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 .814(re \214lenames \(quoting)-3.314 F -(\214lenames is the def)224 180 Q(ault\).)-.1 E F1(nosort)184 192 Q F0 --.7(Te)224 192 S(ll readline not to sort the list of possible completio\ -ns alphabetically).7 E(.)-.65 E F1(nospace)184 204 Q F0 -.7(Te)224 204 S +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 216 Q F1 -(plusdirs)184 228 Q F0 1.985(After an)224 228 R 4.485(ym)-.15 G 1.985 +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 -.583(completion is attempted and an)224 240 R 3.084(ym)-.15 G .584 -(atches are added to the results of the other)-3.084 F(actions.)224 252 -Q F1144 264 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 276 +.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 F1144 324 Q/F2 10/Times-Italic@0 SF(action)2.5 E F0(The)184 336 Q F2(action)2.5 E F0(may be one of the follo)2.5 E (wing to generate a list of possible completions:)-.25 E F1(alias)184 -288 Q F0(Alias names.)224 288 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(arrayv)184 300 Q(ar)-.1 E F0(Array v)224 312 Q -(ariable names.)-.25 E F1(binding)184 324 Q(Readline)224 324 Q F0 -.1 -(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 336 S(iltin) -.2 E F0(Names of shell b)224 336 Q(uiltin commands.)-.2 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 348 -Q F0(Command names.)224 360 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 372 Q(ectory)-.18 E F0(Directory names.)224 384 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 396 -Q F0(Names of disabled shell b)224 408 Q(uiltins.)-.2 E F1(enabled)184 -420 Q F0(Names of enabled shell b)224 420 Q(uiltins.)-.2 E F1(export)184 -432 Q F0(Names of e)224 432 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 +2.5 E F0(.)A F1(arrayv)184 360 Q(ar)-.1 E F0(Array v)224 372 Q +(ariable names.)-.25 E F1(binding)184 384 Q(Readline)224 384 Q F0 -.1 +(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 396 S(iltin) +.2 E F0(Names of shell b)224 396 Q(uiltin commands.)-.2 E +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 408 +Q F0(Command names.)224 420 Q(May also be speci\214ed as)5 E F12.5 +E F0(.)A F1(dir)184 432 Q(ectory)-.18 E F0(Directory names.)224 444 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 456 +Q F0(Names of disabled shell b)224 468 Q(uiltins.)-.2 E F1(enabled)184 +480 Q F0(Names of enabled shell b)224 480 Q(uiltins.)-.2 E F1(export)184 +492 Q F0(Names of e)224 492 Q(xported shell v)-.15 E 2.5(ariables. May) -.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(\214le)184 -444 Q F0(File names.)224 444 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(function)184 456 Q F0(Names of shell functions.)224 468 -Q F1(gr)184 480 Q(oup)-.18 E F0(Group names.)224 480 Q +504 Q F0(File names.)224 504 Q(May also be speci\214ed as)5 E F1 +2.5 E F0(.)A F1(function)184 516 Q F0(Names of shell functions.)224 528 +Q F1(gr)184 540 Q(oup)-.18 E F0(Group names.)224 540 Q (May also be speci\214ed as)5 E F12.5 E F0(.)A F1(helptopic)184 -492 Q F0(Help topics as accepted by the)224 504 Q F1(help)2.5 E F0 -.2 -(bu)2.5 G(iltin.).2 E F1(hostname)184 516 Q F0(Hostnames, as tak)224 528 +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 540 Q F0 -(Job names, if job control is acti)224 540 Q -.15(ve)-.25 G 5(.M).15 G -(ay also be speci\214ed as)-5 E F12.5 E F0(.)A F1 -.1(ke)184 552 S -(yw).1 E(ord)-.1 E F0(Shell reserv)224 564 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 F12.5 E F0(.)A F1 -.1(ke)184 612 S +(yw).1 E(ord)-.1 E F0(Shell reserv)224 624 Q(ed w)-.15 E 2.5(ords. May) -.1 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(running)184 -576 Q F0(Names of running jobs, if job control is acti)224 576 Q -.15 -(ve)-.25 G(.).15 E F1(ser)184 588 Q(vice)-.1 E F0(Service names.)224 588 -Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 600 -Q F0 -1.11(Va)224 600 S(lid ar)1.11 E(guments for the)-.18 E F12.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 F12.5 E F0(.)A F1(setopt)184 660 +Q F0 -1.11(Va)224 660 S(lid ar)1.11 E(guments for the)-.18 E F12.5 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 612 Q F0(Shell option names as accepted by the)224 612 Q F1 -(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 624 Q F0 -(Signal names.)224 624 Q F1(stopped)184 636 Q F0 -(Names of stopped jobs, if job control is acti)224 636 Q -.15(ve)-.25 G -(.).15 E F1(user)184 648 Q F0(User names.)224 648 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1 -.1(va)184 660 S -(riable).1 E F0(Names of all shell v)224 660 Q 2.5(ariables. May)-.25 F -(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 672 Q F2 -(command)2.5 E(command)184 684 Q F0 1.056(is e)3.556 F -.15(xe)-.15 G -1.056(cuted in a subshell en).15 F 1.056 -(vironment, and its output is used as the possible)-.4 F(completions.) -184 696 Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(59)193.45 E 0 Cg -EP +(shopt)184 672 Q F0(Shell option names as accepted by the)224 672 Q F1 +(shopt)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1(signal)184 684 Q F0 +(Signal names.)224 684 Q F1(stopped)184 696 Q F0 +(Names of stopped jobs, if job control is acti)224 696 Q -.15(ve)-.25 G +(.).15 E F1(user)184 708 Q F0(User names.)224 708 Q +(May also be speci\214ed as)5 E F12.5 E F0(.)A(GNU Bash 5.0)72 768 +Q(2018 August 7)145.395 E(59)194.555 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 -SF144 84 Q/F2 10/Times-Italic@0 SF(function)2.5 E F0 .113 -(The shell function)184 96 R F2(function)2.614 E F0 .114(is e)2.614 F +SF -.1(va)184 84 S(riable).1 E F0(Names of all shell v)224 84 Q 2.5 +(ariables. May)-.25 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A +F1144 96 Q/F2 10/Times-Italic@0 SF(command)2.5 E(command)184 108 Q +F0 1.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 F1144 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 .114(the func-)2.614 F .817(tion is e)184 108 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 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 120 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 .104(third ar)184 132 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 144 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 156 Q(Y)-.828 E F0(array v)2.25 -E(ariable.)-.25 E F1144 168 Q F2(globpat)2.5 E F0 1.008 -(The pathname e)184 180 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 192 Q F1144 204 Q F2(pr)2.5 E(e\214x)-.37 E(pr) -184 216 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 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 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 9/Times-Bold@0 SF(COMPREPL)184 204 Q(Y)-.828 E F0(array v)2.25 +E(ariable.)-.25 E F1144 216 Q F2(globpat)2.5 E F0 1.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 F1144 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 228 Q F1144 240 Q F2(suf)2.5 E -<8c78>-.18 E(suf)184 240 Q<8c78>-.18 E F0 +-.15(ve)-.2 G(been applied.)184 276 Q F1144 288 Q F2(suf)2.5 E +<8c78>-.18 E(suf)184 288 Q<8c78>-.18 E F0 (is appended to each possible completion after all other options ha)2.5 -E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 252 Q F2(wor)2.5 E -(dlist)-.37 E F0(The)184 264 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 .98 -(each resultant w)184 276 R .98(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.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 288 Q .766 -(vide a mechanism for the w)-.15 F .765 +E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 300 Q F2(wor)2.5 E +(dlist)-.37 E F0(The)184 312 Q F2(wor)3.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 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 300 S 1.964(lue of).25 F F3(IFS)4.464 E/F4 9/Times-Roman@0 SF(.) +(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.464 F(match the w)184 312 Q(ord being completed.)-.1 E F1144 324 -Q F2(\214lterpat)2.5 E(\214lterpat)184 336 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 348 R 1.596 -(guments, and each completion)-.18 F(matching)184 360 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 372 Q 2.5(yc)-.15 G +6.465 F(match the w)184 360 Q(ord being completed.)-.1 E F1144 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 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 .466(The return v)144 388.8 R .466 +-.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 F12.967 E F0 -(or)2.967 E F12.967 E F0 .467(is sup-)2.967 F 1.362 -(plied without a)144 400.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 412.8 Q F0 +(lid option is supplied, an option other than).25 F F12.966 E F0 +(or)2.966 E F12.966 E F0 .466(is sup-)2.966 F 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 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 429.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C -F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C F2 -(name)-2.5 E F0(])A .447(Modify completion options for each)144 441.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 453.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 465.6 Q F2(name) -3.223 E F0 .723(or the current completion.)3.223 F .724(The possible v) +F1(compopt)108 477.6 Q F0([)2.5 E F1A 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 +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 .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 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 .724(alid for the)-.25 F F1(com-)3.224 E(plete)144 477.6 Q F0 -.2(bu) -2.798 G .298(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) --5.297 E F12.797 E F0 .297 -(option indicates that the remaining options should apply to)2.797 F -1.227(the `)144 489.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 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 F12.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.727 F 2.178(completion has pre)144 501.6 R 2.178 -(viously been de\214ned.)-.25 F(The)7.178 E F14.678 E F0 2.177 -(option indicates that the remaining options)4.677 F(should apply to `) -144 513.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 537.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 549.6 R 2.038 +(viously been de\214ned.)-.25 F(The)7.038 E F14.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 F13.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 549.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 566.4 Q F0([) -2.5 E F2(n)A F0(])A 1.754(Resume the ne)144 578.4 R 1.754 +(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.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 590.4 R F2(n)3.709 E F0 +(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 SF3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209 (is greater than the number of enclosing)3.949 F .514 -(loops, the last enclosing loop \(the `)144 602.4 R(`top-le)-.74 E -.15 +(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 614.4 Q F1(declar)108 631.2 -Q(e)-.18 E F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1-2.5 E -F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C(..])-2.5 E F1 -(typeset)108 643.2 Q F0([)2.5 E F1(\255aAfFgilnrtux)A F0 2.5(][)C F1 --2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(value)A F0 2.5(].)C -(..])-2.5 E 1.264(Declare v)144 655.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 667.2 S 3.483(riables. The).25 F F13.483 E F0 .983 -(option will display the attrib)3.483 F .983(utes and v)-.2 F .982 -(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1 -3.482 E F0 .982(is used)3.482 F(with)144 679.2 Q F2(name)2.774 E -F0(ar)2.774 E .274(guments, additional options, other than)-.18 F F1 -2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .275 -(re ignored.)-2.775 F(When)5.275 E F12.775 E F0 .275(is supplied) -2.775 F(without)144 691.2 Q F2(name)4.814 E F0(ar)4.814 E 2.314 -(guments, it will display the attrib)-.18 F 2.314(utes and v)-.2 F 2.313 -(alues of all v)-.25 F 2.313(ariables ha)-.25 F 2.313(ving the)-.2 F -(attrib)144 703.2 Q 1.181(utes speci\214ed by the additional options.) --.2 F 1.182(If no other options are supplied with)6.181 F F13.682 -E F0(,)A F1(declar)3.682 E(e)-.18 E F0 .62(will display the attrib)144 -715.2 R .62(utes and v)-.2 F .62(alues of all shell v)-.25 F 3.12 -(ariables. The)-.25 F F13.12 E F0 .62 -(option will restrict the display)3.12 F 1.29(to shell functions.)144 -727.2 R(The)6.29 E F13.79 E F0 1.291(option inhibits the display \ -of function de\214nitions; only the function)3.791 F(GNU Bash 5.0)72 768 -Q(2018 March 15)144.29 E(60)193.45 E 0 Cg EP +3.013 E(not greater than or equal to 1.)144 698.4 Q(GNU Bash 5.0)72 768 +Q(2018 August 7)145.395 E(60)194.555 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 .948 -(name and attrib)144 84 R .948(utes are printed.)-.2 F .948(If the)5.948 -F/F1 10/Times-Bold@0 SF(extdeb)3.448 E(ug)-.2 E F0 .948 +(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-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-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 F13.483 E F0 .983 +(option will display the attrib)3.483 F .983(utes and v)-.2 F .982 +(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1 +3.482 E F0 .982(is used)3.482 F(with)144 132 Q F2(name)2.774 E F0 +(ar)2.774 E .274(guments, additional options, other than)-.18 F F1 +2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .275(re ignored.) +-2.775 F(When)5.275 E F12.775 E F0 .275(is supplied)2.775 F +(without)144 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 F13.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 F13.12 E F0 .62(option will restrict the display)3.12 F +1.29(to shell functions.)144 180 R(The)6.29 E F13.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 -96 R/F2 10/Times-Italic@0 SF(name)4.19 E F0 1.69 -(is de\214ned are displayed as well.)4.19 F(The)6.69 E F14.19 E F0 -(option)4.19 E(implies)144 108 Q F13.892 E F0 6.392(.T)C(he)-6.392 -E F13.892 E F0 1.391(option forces v)3.892 F 1.391 +204 R F2(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 F +(The)6.69 E F14.19 E F0(option)4.19 E(implies)144 216 Q F1 +3.892 E F0 6.392(.T)C(he)-6.392 E F13.892 E F0 1.391 +(option forces v)3.892 F 1.391 (ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 -(ve)-.25 G(n).15 E(when)144 120 Q F1(declar)4.382 E(e)-.18 E F0 1.882 +(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 132 R +(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 144 Q(utes:)-.2 E F1 -144 156 Q F0(Each)180 156 Q F2(name)2.5 E F0(is an inde)2.5 E -.15 +1.093 -.15(ve v)-.25 H(ariables)-.1 E(attrib)144 252 Q(utes:)-.2 E F1 +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 F1144 168 Q F0(Each)180 -168 Q F2(name)2.5 E F0(is an associati)2.5 E .3 -.15(ve a)-.25 H(rray v) +E F0(abo)2.5 E -.15(ve)-.15 G(\).).15 E F1144 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 F1144 180 Q F0(Use function names only)180 180 Q(.)-.65 -E F1144 192 Q F0 .557(The v)180 192 R .558 +(\).).15 E F1144 288 Q F0(Use function names only)180 288 Q(.)-.65 +E F1144 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/F3 9/Times-Bold@0 SF .558 -(ARITHMETIC EV)3.058 F(ALU)-1.215 E(A-)-.54 E(TION)180 204 Q F0(abo)2.25 +(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 F1144 216 Q F0 .91 -(When the v)180 216 R .909(ariable is assigned a v)-.25 F .909 +(ariable is assigned a v)-.25 E(alue.)-.25 E F1144 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 .909(rted to lo).15 F(wer)-.25 E(-)-.2 E 2.5(case. The)180 228 R -(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 240 Q -F0(Gi)180 240 Q 1.619 -.15(ve e)-.25 H(ach).15 E F2(name)3.819 E F0(the) +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 F1144 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.519(That other v)180 252 R 1.519(ariable is de\214ned by the v)-.25 F +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 264 Q .226 +(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 F12.726 E F0(attrib) -2.726 E .227(ute itself, are)-.2 F .809(performed on the v)180 276 R +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 288 Q(ariables.)-.25 E F1144 300 Q F0 -(Mak)180 300 Q(e)-.1 E F2(name)5.046 E F0 5.046(sr)C(eadonly)-5.046 E +F(applied to array v)180 396 Q(ariables.)-.25 E F1144 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 312 -Q F1144 324 Q F0(Gi)180 324 Q .73 -.15(ve e)-.25 H(ach).15 E F2 +2.547(alues by subsequent)-.25 F(assignment statements or unset.)180 420 +Q F1144 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 336 Q(The trace attrib)5 E -(ute has no special meaning for v)-.2 E(ariables.)-.25 E F1144 348 -Q F0 .909(When the v)180 348 R .909(ariable is assigned a v)-.25 F .909 +(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 F1144 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 360 R(lo)2.5 -E(wer)-.25 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 372 Q -F0(Mark)180 372 Q F2(name)2.5 E F0 2.5(sf)C(or e)-2.5 E +(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 F1144 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 .121 -(Using `+' instead of `\255' turns of)144 388.8 R 2.621(ft)-.25 G .121 +(Using `+' instead of `\255' turns of)144 496.8 R 2.621(ft)-.25 G .121 (he attrib)-2.621 F .121(ute instead, with the e)-.2 F .12 (xceptions that)-.15 F F1(+a)2.62 E F0 .12(may not be used)2.62 F .644 -(to destro)144 400.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) +(to destro)144 508.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) -3.144 F .644(ariable and)-.25 F F1(+r)3.145 E F0 .645(will not remo) 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 412.8 Q F1 +(ute. When)-.2 F .645(used in a func-)3.145 F(tion,)144 520.8 Q F1 (declar)2.835 E(e)-.18 E F0(and)2.835 E F1(typeset)2.835 E F0(mak)2.835 E 2.835(ee)-.1 G(ach)-2.835 E F2(name)2.835 E F0 .335 (local, as with the)2.835 F F1(local)2.835 E F0 .335 (command, unless the)2.835 F F12.835 E F0(option)2.835 E 1.282 -(is supplied.)144 424.8 R 1.282(If a v)6.282 F 1.283 +(is supplied.)144 532.8 R 1.282(If a v)6.282 F 1.283 (ariable name is follo)-.25 F 1.283(wed by =)-.25 F F2(value)A F0 3.783 (,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.283 (ariable is set to)-.25 F F2(value)3.783 E F0(.)A .927(When using)144 -436.8 R F13.427 E F0(or)3.427 E F13.427 E F0 .926 +544.8 R F13.427 E F0(or)3.427 E F13.427 E F0 .926 (and the compound assignment syntax to create array v)3.427 F .926 -(ariables, additional)-.25 F(attrib)144 448.8 Q .592(utes do not tak)-.2 +(ariables, additional)-.25 F(attrib)144 556.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 460.8 R/F4 10/Courier@0 SF .428(\255f foo=bar)2.929 F F0 2.928(,a)C +144 568.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 -472.8 R .062(alue to a readonly v)-.25 F .063 +580.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 484.8 R F1 +(able without using the compound assignment syntax \(see)144 592.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 .101(is not a)2.602 F -.25(va)144 496.8 S .171 +F2(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 604.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 508.8 R 3.46(fa) +(ariable, an)-.25 F .96(attempt is made to turn of)144 616.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 520.8 Q +(ariable, or an attempt is made to display a)-.25 F(non-e)144 628.8 Q (xistent function with)-.15 E F12.5 E F0(.)A F1 -(dirs [\255clpv] [+)108 537.6 Q F2(n)A F1 2.5(][)C-2.5 E F2(n)A F1 -(])A F0 -.4(Wi)144 549.6 S .328 +(dirs [\255clpv] [+)108 645.6 Q F2(n)A F1 2.5(][)C-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 561.6 R 1.238 -(Directories are added to the list with the)6.238 F F1(pushd)144 573.6 Q +(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 585.6 Q -.1(wa)-.1 G -(ys the \214rst directory in the stack.).1 E F1144 597.6 Q F0 -(Clears the directory stack by deleting all of the entries.)180 597.6 Q -F1144 609.6 Q F0 .882 -(Produces a listing using full pathnames; the def)180 609.6 R .881 +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 F1144 705.6 Q F0 +(Clears the directory stack by deleting all of the entries.)180 705.6 Q +F1144 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 -621.6 Q(.)-.65 E F1144 633.6 Q F0 -(Print the directory stack with one entry per line.)180 633.6 Q F1 -144 645.6 Q F0 .272(Print the directory stack with one entry per line, \ -pre\214xing each entry with its inde)180 645.6 R 2.773(xi)-.15 G 2.773 -(nt)-2.773 G(he)-2.773 E(stack.)180 657.6 Q F1(+)144 669.6 Q F2(n)A F0 -1.565(Displays the)180 669.6 R F2(n)4.065 E F0 1.565 -(th entry counting from the left of the list sho)B 1.564(wn by)-.25 F F1 -(dirs)4.064 E F0 1.564(when in)4.064 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 681.6 Q F1144 693.6 Q F2 -(n)A F0 1.194(Displays the)180 693.6 R F2(n)3.694 E F0 1.194 -(th entry counting from the right of the list sho)B 1.194(wn by)-.25 F -F1(dirs)3.694 E F0 1.194(when in)3.694 F -.2(vo)-.4 G -.1(ke).2 G(d).1 E -(without options, starting with zero.)180 705.6 Q 1.707(The return v)144 -722.4 R 1.707(alue is 0 unless an in)-.25 F -.25(va)-.4 G 1.707 -(lid option is supplied or).25 F F2(n)4.207 E F0(inde)4.206 E -.15(xe) --.15 G 4.206(sb).15 G -.15(ey)-4.206 G 1.706(ond the end of the).15 F -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(61)193.45 E 0 Cg EP +729.6 Q(.)-.65 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(61) +194.555 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(directory stack.) -144 84 Q/F1 10/Times-Bold@0 SF(diso)108 100.8 Q(wn)-.1 E F0([)2.5 E F1 -(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C/F2 10/Times-Italic@0 SF -(jobspec)-2.5 E F0(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 -112.8 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 124.8 R F12.596 -E F0 .096(nor the)2.596 F F12.596 E F0 .096 -(option is supplied, the)2.596 F F2(curr)2.596 E .096(ent job)-.37 F F0 -.096(is used.)2.596 F .096(If the)5.096 F F12.596 E F0 .096 -(option is gi)2.596 F -.15(ve)-.25 G .096(n, each).15 F F2(jobspec) -145.74 136.8 Q F0 .585(is not remo)3.395 F -.15(ve)-.15 G 3.085(df).15 G -.585(rom the table, b)-3.085 F .585(ut is mark)-.2 F .585(ed so that)-.1 -F/F3 9/Times-Bold@0 SF(SIGHUP)3.085 E F0 .586 -(is not sent to the job if the)2.835 F .962(shell recei)144 148.8 R -.15 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF144 84 Q F0(Print the directory stack with one entry per line.) +180 84 Q F1144 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 F1144 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 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 184.8 Q F1(diso)108 201.6 Q(wn)-.1 E F0([)2.5 E F1 +(\255ar)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(jobspec)-2.5 E F0 +(... |)2.5 E F2(pid)2.5 E F0(... ])2.5 E -.4(Wi)144 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 .122(is not present, and)2.932 +F .096(neither the)144 225.6 R F12.596 E F0 .096(nor the)2.596 F +F12.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E +.096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 +2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) +.15 F F2(jobspec)145.74 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 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 160.8 R F1 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 261.6 R F1 3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 (ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F -1.359(The return)6.359 F -.25(va)144 172.8 S(lue is 0 unless a).25 E F2 +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 189.6 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 201.6 R F2(ar)2.925 E(g)-.37 E +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 213.6 R(If)5.307 E F12.807 E F0 .307 +(error occurs.)144 314.4 R(If)5.307 E F12.807 E F0 .307 (is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25 F .308(If the)5.308 F F12.808 E F0 .308(option is gi)2.808 F -.15 (ve)-.25 G .308(n, inter).15 F(-)-.2 E 1.349(pretation of the follo)144 -225.6 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) +326.4 R 1.348(wing backslash-escaped characters is enabled.)-.25 F(The) 6.348 E F13.848 E F0 1.348(option disables the)3.848 F 1.054 -(interpretation of these escape characters, e)144 237.6 R -.15(ve)-.25 G +(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 -249.6 Q F1(xpg_echo)3.459 E F0 .959 +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 261.6 R(ault.)-.1 E F1(echo)5.715 E +(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 F13.216 E F0 .716 (to mean the end of options.)3.216 F F1(echo)5.716 E F0 -(interprets the follo)144 273.6 Q(wing escape sequences:)-.25 E F1(\\a) -144 285.6 Q F0(alert \(bell\))180 285.6 Q F1(\\b)144 297.6 Q F0 -(backspace)180 297.6 Q F1(\\c)144 309.6 Q F0(suppress further output)180 -309.6 Q F1(\\e)144 321.6 Q(\\E)144 333.6 Q F0(an escape character)180 -333.6 Q F1(\\f)144 345.6 Q F0(form feed)180 345.6 Q F1(\\n)144 357.6 Q -F0(ne)180 357.6 Q 2.5(wl)-.25 G(ine)-2.5 E F1(\\r)144 369.6 Q F0 -(carriage return)180 369.6 Q F1(\\t)144 381.6 Q F0(horizontal tab)180 -381.6 Q F1(\\v)144 393.6 Q F0 -.15(ve)180 393.6 S(rtical tab).15 E F1 -(\\\\)144 405.6 Q F0(backslash)180 405.6 Q F1(\\0)144 417.6 Q F2(nnn)A -F0(the eight-bit character whose v)180 417.6 Q(alue is the octal v)-.25 +(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 429.6 Q F2(HH)A F0(the eight-bit character whose v)180 429.6 Q +(\\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 441.6 Q F2(HHHH)A F0 1.507 -(the Unicode \(ISO/IEC 10646\) character whose v)180 453.6 R 1.506 +(\\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 465.6 Q 2.5(xd)-.15 G(igits\))-2.5 E F1 -(\\U)144 477.6 Q F2(HHHHHHHH)A F0 .547 -(the Unicode \(ISO/IEC 10646\) character whose v)180 489.6 R .547 +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 501.6 Q F0(\(one to eight he)2.5 E 2.5(xd)-.15 G -(igits\))-2.5 E F1(enable)108 518.4 Q F0([)2.5 E F1A F0 2.5(][)C +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 F1A F0 2.5(][)C F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 -(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 530.4 R +(][)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 .833 -(the same name as a shell b)144 542.4 R .834(uiltin to be e)-.2 F -.15 +(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.334(nt).15 G(hough)-3.334 E .99 -(the shell normally searches for b)144 554.4 R .989 +(the shell normally searches for b)144 655.2 R .989 (uiltins before disk commands.)-.2 F(If)5.989 E F13.489 E F0 .989 (is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581 -(abled; otherwise,)144 566.4 R F2(names)4.082 E F0 1.582(are enabled.) +(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 -.666(PA)4.082 -G(TH)-.189 E F0 .081(instead of the shell b)144 578.4 R .081(uiltin v) +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 F12.58 E F0 .08 -(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 590.4 S 1.524 +(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 602.4 Q F1 +(ystems that support dynamic loading.)-4.024 F(The)144 703.2 Q F1 2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F .367(viously loaded with)-.25 F F12.866 E F0 5.366(.I)C 2.866(fn) -5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi) --.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 614.4 R F1 +-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 715.2 R F1 2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 (uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144 -626.4 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 +727.2 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 (is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F -(If)5.098 E F12.598 E F0 1.916 -(is supplied, the list printed includes all b)144 638.4 R 1.916 -(uiltins, with an indication of whether or not each is)-.2 F 2.879 -(enabled. If)144 650.4 R F12.879 E F0 .379 -(is supplied, the output is restricted to the POSIX)2.879 F F2(special) -2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The).2 F .378(return v)2.878 F -(alue)-.25 E .994(is 0 unless a)144 662.4 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 -674.4 Q F1 -2.3 -.15(ev a)108 691.2 T(l).15 E F0([)2.5 E F2(ar)A(g)-.37 -E F0(...])2.5 E(The)144 703.2 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 715.2 R -.15(xe)-.15 -G .495(cuted by the shell, and its e).15 F .495 -(xit status is returned as the v)-.15 F .495(alue of)-.25 F 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 727.2 Q -(guments,)-.18 E F1 -2.3 -.15(ev a)2.5 H(l).15 E F0(returns 0.)2.5 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(62)193.45 E 0 Cg EP +(If)5.098 E F12.598 E F0(GNU Bash 5.0)72 768 Q(2018 August 7) +145.395 E(62)194.555 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(exec)108 84 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E/F2 10 -/Times-Italic@0 SF(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E -F2(ar)A(guments)-.37 E F0(]])A(If)144 96 Q F2(command)3.006 E F0 .306 +(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 SF2.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 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 189.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments) +-.37 E F0(]])A(If)144 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 108 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 -2.676 E F0 .176 +(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 F12.676 E F0 .176 (option is supplied, the shell places a dash at the be)2.676 F .177 -(ginning of)-.15 F .5(the zeroth ar)144 120 R .5(gument passed to)-.18 F -F2(command)3 E F0 5.499(.T).77 G .499(his is what)-5.499 F F2(lo)2.999 E -(gin)-.1 E F0 .499(\(1\) does.).24 F(The)5.499 E F12.999 E F0 .499 -(option causes)2.999 F F2(com-)3.199 E(mand)144 132 Q F0 .638(to be e) -3.908 F -.15(xe)-.15 G .638(cuted with an empty en).15 F 3.138 +(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 F12.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 F13.138 E F0 .638 (is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) -3.319 F 1.078(zeroth ar)144 144 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 156 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 +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 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 168 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 180 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 +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 192 Q +.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 208.8 Q F0([)2.5 E F2(n)A F0 -(])A .096(Cause the shell to e)144 208.8 R .096(xit with a status of) +(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 220.8 S 2.5(cuted. A).15 F(trap on)2.5 E/F3 9 +-.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 237.6 Q F0([)2.5 +(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 249.6 Q F0 .256(The supplied)144 261.6 R +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 273.6 R(the)2.627 E F1 +(xe)-.15 G(cuted).15 E 2.627(commands. If)144 379.2 R(the)2.627 E F1 2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) .15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) 5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126 -(n, or if the).15 F F1144 285.6 Q F0 .048 +(n, or if the).15 F F1144 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 F12.548 E F0 -.048(option causes the)2.548 F -.15(ex)144 297.6 S 1.447 +.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.946(,t)C(he)-3.946 E -.25(va)144 309.6 S .741(lue of the v) +-.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 321.6 R F2(names)2.532 E F0 .032 +.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 F12.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0 -(that)2.711 E(is not a function.)144 333.6 Q F1(fc)108 350.4 Q F0([)2.5 -E F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 +(that)2.711 E(is not a function.)144 439.2 Q F1(fc)108 456 Q F0([)2.5 E +F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 -362.4 Q F0([)2.5 E F2(pat)A F0(=)A F2 -.37(re)C(p).37 E F0 2.5(][)C F2 +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 374.4 R F2<8c72> +(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 -386.4 R -.15(xe)-.15 G .142(cutes them.).15 F F2 -.45(Fi)5.141 G -.1(rs) +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 398.4 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 410.4 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 422.4 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 434.4 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 458.4 -Q F12.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 +F12.522 E F0 .022 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E F12.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 -(rses the order of).15 F .438(the commands.)144 470.4 R .438(If the) -5.438 F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 +(rses the order of).15 F .438(the commands.)144 576 R .438(If the)5.438 +F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.335(the editor gi)144 482.4 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 494.4 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 506.4 R .951 +.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 518.4 S(cuted.).15 E .788(In the second form,)144 542.4 R -F2(command)3.288 E F0 .788(is re-e)3.288 F -.15(xe)-.15 G .788 +-.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.289 G(p).37 E F0(.)A F2(Com-)5.789 -E(mand)144 554.4 Q F0 .172(is interpreted the same as)2.672 F F2<8c72> +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 566.4 Q F4 7.165 -(rc)3.665 G(c)-7.165 E F0 1.165(runs the last command be)3.665 F 1.166 +2.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 578.4 Q .142(If the \214rst form is used, the return v)144 -602.4 R .142(alue is 0 unless an in)-.25 F -.25(va)-.4 G .142 +(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 .454(specify history lines out of range.)144 614.4 -R .454(If the)5.454 F F12.954 E F0 .454 +E F2(last)2.732 E F0 .454(specify history lines out of range.)144 720 R +.454(If the)5.454 F F12.954 E F0 .454 (option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455 -(alue of the)-.25 F .788(last command e)144 626.4 R -.15(xe)-.15 G .788 -(cuted or f).15 F .787 +(alue of the)-.25 F(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(63) +194.555 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 .787(If the)5.787 F 1.135 (second form is used, the return status is that of the command re-e)144 -638.4 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 650.4 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 667.2 Q F0([)2.5 E F2(jobspec)A F0(])A(Resume) -144 679.2 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 691.2 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 703.2 Q +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 F2(jobspec)145.74 715.2 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 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 -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(63)193.45 E 0 Cg EP -%%Page: 64 64 -%%BeginPageSetup -BP -%%EndPageSetup -/F0 10/Times-Roman@0 SF -.35(BA)72 48 S 137.14(SH\(1\) General).35 F -(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 -SF(getopts)108 84 Q/F2 10/Times-Italic@0 SF(optstring name)2.5 E F0([) -2.5 E F2(ar)A(gs)-.37 E F0(])A F1(getopts)144 96 Q F0 .793 -(is used by shell procedures to parse positional parameters.)3.293 F F2 +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 108 R .149 +(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 120 Q .578 +-.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 132 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 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 144 R(ariable)-.25 E F2(name)3.296 E F0 3.296 -(,i).18 G(nitializing)-3.296 E F2(name)3.657 E F0 .797(if it does not e) -3.477 F .797(xist, and the inde)-.15 F 3.297(xo)-.15 G 3.297(ft)-3.297 G -.797(he ne)-3.297 F(xt)-.15 E(ar)144 156 Q .085 +(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 168 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 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 180 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 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 192 R F1(getopts)2.793 E F0 .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 .294(et of parameters)-2.793 F(is to be used.)144 204 Q -2.044(When the end of options is encountered,)144 228 R F1(getopts)4.543 -E F0 -.15(ex)4.543 G 2.043(its with a return v).15 F 2.043 -(alue greater than zero.)-.25 F F3(OPTIND)144 240 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 F1(getopts)144 264 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 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 F2(ar)4.893 E(gs)-.37 E F0(,).27 E F1(getopts)144 -276 Q F0(parses those instead.)2.5 E F1(getopts)144 300 Q F0 1.166 +(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 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 312 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 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 324 -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 336 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 360 R -.25(va)-.4 G .666(lid option is seen,) -.25 F F1(getopts)3.166 E F0 .667(places ? into)3.167 F F2(name)3.527 E -F0 .667(and, if not silent, prints an error message)3.347 F .4 -(and unsets)144 372 R F3(OPT)2.9 E(ARG)-.81 E F4(.)A F0(If)4.899 E F1 -(getopts)2.899 E F0 .399 -(is silent, the option character found is placed in)2.899 F F3(OPT)2.899 -E(ARG)-.81 E F0 .399(and no)2.649 F(diagnostic message is printed.)144 -384 Q 1.241(If a required ar)144 408 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 420 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 432 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 456 Q F0 .902 +-.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 +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.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 468 Q F1(hash)108 484.8 -Q F0([)2.5 E F1(\255lr)A F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E -F0 2.5(][)C F1(\255dt)-2.5 E F0 2.5(][)C F2(name)-2.5 E F0(])A .858 -(Each time)144 496.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) +(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-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 508.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 .243(If the)144 520.8 -R F12.743 E F0 .243 -(option is supplied, no path search is performed, and)2.743 F F2 +(viously-remembered pathname is discarded.)-.25 F .243(If the)144 626.4 +R F22.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 532.8 R(The)6.711 E F14.211 E F0 1.711 +(of the command.)144 638.4 R(The)6.711 E F24.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 F14.212 E F0 -.833(option causes the shell to for)144 544.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 F13.333 E F0 .833(option is sup-) -3.333 F .703(plied, the full pathname to which each)144 556.8 R F2(name) +(get all remembered locations.)-.18 F(The)6.712 E F24.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 F23.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 -F2(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 -568.8 R F13.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 -.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1 +F1(name)3.204 E F0(ar)3.204 E(guments)-.18 E .795(are supplied with)144 +674.4 R F23.295 E F0 3.295(,t)C(he)-3.295 E F1(name)3.295 E F0 +.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F2 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 -580.8 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 592.8 Q F12.822 E F0 .322 +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 F22.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 604.8 Q F2(name)2.86 +.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 621.6 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 -633.6 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 -645.6 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 657.6 Q F1 -144 669.6 Q F0(Display a short description of each)180 669.6 Q F2 -(pattern)2.5 E F1144 681.6 Q F0(Display the description of each) -180 681.6 Q F2(pattern)2.5 E F0(in a manpage-lik)2.5 E 2.5(ef)-.1 G -(ormat)-2.5 E F1144 693.6 Q F0 -(Display only a short usage synopsis for each)180 693.6 Q F2(pattern)2.5 -E F0(The return status is 0 unless no command matches)144 710.4 Q F2 -(pattern)2.5 E F0(.).24 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E -(64)193.45 E 0 Cg EP +.25 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(64)194.555 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(history [)108 84 Q/F2 10/Times-Italic@0 SF(n)A F1(])A(history \255c) -108 96 Q(history \255d)108 108 Q F2(of)2.5 E(fset)-.18 E F1 -(history \255d)108 120 Q F2(start)2.5 E F0A F2(end)A F1 -(history \255anrw)108 132 Q F0([)2.5 E F2(\214lename)A F0(])A F1 -(history \255p)108 144 Q F2(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A 2.5(g.) --.37 G(..)-2.5 E F0(])A F1(history \255s)108 156 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 168 S .752 +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 +144 132 Q F0(Display a short description of each)180 132 Q F2 +(pattern)2.5 E F1144 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 F1144 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 F0A 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 +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.252 E F0(ha)3.252 E -.15(ve)-.2 -G .381(been modi\214ed.)144 180 R .38(An ar)5.38 F .38(gument of)-.18 F -F2(n)3.24 E F0 .38(lists only the last)3.12 F F2(n)3.24 E F0 2.88 +G .381(been modi\214ed.)144 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 192 Q(T)-.855 E F0 .264 +/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 204 R 6.019(.N)-.65 G +(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 216 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 228 Q(alue of)-.25 E F3(HISTFILE)2.5 E F0(is used.)2.25 -E(Options, if supplied, ha)5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 240 Q F0 -(Clear the history list by deleting all the entries.)180 240 Q F1 -144 252 Q F2(of)2.5 E(fset)-.18 E F0 .39 -(Delete the history entry at position)180 264 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 276 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 288 Q 2.5(,a) +(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 F1144 345.6 Q F0 +(Clear the history list by deleting all the entries.)180 345.6 Q F1 +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 -144 300 Q F2(start)2.5 E F0A F2(end)A F0 .758 -(Delete the history entries between positions)180 312 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 324 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 +144 405.6 Q F2(start)2.5 E F0A 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 -144 336 Q F0 .564(Append the `)180 336 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 348 Q +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 F1144 360 Q -F0 .854(Read the history lines not already read from the history \214le\ - into the current history list.)180 360 R .772 -(These are lines appended to the history \214le since the be)180 372 R +(ut not already appended to the history \214le.)-.2 E F1144 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 384 Q F1144 396 Q F0(Read the contents of the history \ -\214le and append them to the current history list.)180 396 Q F1 -144 408 Q F0(Write the current history list to the history \214le, o)180 -408 Q -.15(ve)-.15 G(rwriting the history \214le').15 E 2.5(sc)-.55 G -(ontents.)-2.5 E F1144 420 Q F0 .626 -(Perform history substitution on the follo)180 420 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 432 R .475 +(sion.)180 489.6 Q F1144 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 +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 F1144 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 444 Q(xpansion.)-.15 E F1144 456 Q F0 .363 -(Store the)180 456 R F2(ar)3.193 E(gs)-.37 E F0 .363 +(normal history e)180 549.6 Q(xpansion.)-.15 E F1144 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 468 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 484.8 R F3(HISTTIMEFORMA)2.645 E(T) +(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 496.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 508.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 520.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 532.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 544.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 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 -3.531 E F0 -.1(fa)144 556.8 S(ils.).1 E F1(jobs)108 573.6 Q F0([) +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 585.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 597.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 F1144 609.6 Q F0 -(List process IDs in addition to the normal information.)180 609.6 Q F1 -144 621.6 Q F0 .193(Display information only about jobs that ha) -180 621.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 633.6 Q F1 -144 645.6 Q F0(List only the process ID of the job')180 645.6 Q 2.5(sp) --.55 G(rocess group leader)-2.5 E(.)-.55 E F1144 657.6 Q F0 -(Display only running jobs.)180 657.6 Q F1144 669.6 Q F0 -(Display only stopped jobs.)180 669.6 Q(If)144 686.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 698.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 715.2 R F1 -2.894 E F0 .394(option is supplied,)2.894 F F1(jobs)2.894 E F0 -.394(replaces an)2.894 F(y)-.15 E F2(jobspec)4.634 E F0 .394(found in) -3.204 F F2(command)3.094 E F0(or)3.664 E F2(ar)3.224 E(gs)-.37 E F0 .395 -(with the corre-)3.164 F(sponding process group ID, and e)144 727.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 -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(65)193.45 E 0 Cg EP +(he follo).15 E(wing meanings:)-.25 E F1144 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 August 7)145.395 E(65)194.555 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(kill)108 84 Q F0([)2.5 E F1A/F2 10/Times-Italic@0 SF(sigspec) -2.5 E F0(|)2.5 E F12.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2 -(sigspec)A F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5 -(].)C(..)-2.5 E F1(kill \255l)108 96 Q F0(|)A F1A F0([)2.5 E F2 -(sigspec)A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12 -(Send the signal named by)144 108 R F2(sigspec)2.96 E F0(or)2.93 E F2 +SF144 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 F1144 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 F1144 120 Q F0 +(Display only running jobs.)180 120 Q F1144 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 F12.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 F1A F2(sigspec)2.5 E F0(|) +2.5 E F12.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A +F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..) +-2.5 E F1(kill \255l)108 218.4 Q F0(|)A F1A F0([)2.5 E F2(sigspec) +A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12 +(Send the signal named by)144 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 120 R .618 -.15(ve s)-.25 H +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 132 Q F2(signum)4.189 E F0 +(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 144 Q .522(gument of)-.18 F -F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an)5.523 -F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when).18 F -F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523(n, the names) -.15 F .28(of the signals corresponding to the ar)144 156 R .28 -(guments are listed, and the return status is 0.)-.18 F(The)5.28 E F2 --.2(ex)2.78 G(it_status).2 E F0(ar)144 168 Q .377(gument to)-.18 F F1 -2.877 E F0 .378 +1.348(is assumed.)3.599 F(An)6.348 E(ar)144 266.4 Q .522(gument of)-.18 +F F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an) +5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when) +.18 F F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523 +(n, the names).15 F .28(of the signals corresponding to the ar)144 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 +F12.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 180 R -(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va)-.25 -G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 +(xit status of a process termi-)-.15 F .963(nated by a signal.)144 302.4 +R(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va) +-.25 G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 (returns true if at least one signal w)3.462 F(as)-.1 E -(successfully sent, or f)144 192 Q(alse if an error occurs or an in)-.1 -E -.25(va)-.4 G(lid option is encountered.).25 E F1(let)108 208.8 Q F2 -(ar)2.5 E(g)-.37 E F0([)2.5 E F2(ar)A(g)-.37 E F0(...])2.5 E(Each)144 -220.8 Q F2(ar)3.026 E(g)-.37 E F0 .196(is an arithmetic e)2.916 F .197 +(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 232.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 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 +(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 273.6 Q 3.152(yo) --.15 G 3.152(ft)-3.152 G .652(he options accepted by)-3.152 F F1(declar) -3.152 E(e)-.18 E F0 5.652(.W)C(hen)-5.652 E F1(local)3.152 E F0 .653 +-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 -285.6 Q F2(name)3.282 E F0 .422(to ha)3.102 F .722 -.15(ve a v)-.2 H -.422(isible scope restricted to that function and its children.).15 F -(If)5.421 E F2(name)2.921 E F0 .421(is \255, the set)2.921 F 1.461 -(of shell options is made local to the function in which)144 297.6 R F1 +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 309.6 R F1(set)4.063 -E 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 321.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 .42 -(error to use)144 333.6 R F1(local)2.92 E F0 .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 345.6 Q -.25(va)-.4 G(lid).25 E F2(name)2.86 E F0(is supplied, or) -2.68 E F2(name)2.5 E F0(is a readonly v)2.5 E(ariable.)-.25 E F1(logout) -108 362.4 Q F0(Exit a login shell.)144 362.4 Q F1(map\214le)108 379.2 Q -F0([)2.5 E F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) +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 F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) 2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 -2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 -2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E -(ay)-.15 E F0(])A F1 -.18(re)108 391.2 S(adarray).18 E F0([)2.5 E F1 +(ay)-.15 E F0(])A F1 -.18(re)108 513.6 S(adarray).18 E F0([)2.5 E F1 A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5 (][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1-2.5 E F2 (count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1-2.5 E F2 (fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][) C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0 -(])A .179(Read lines from the standard input into the inde)144 403.2 R +(])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 415.2 R +(rom \214le descriptor)-2.68 F F2(fd)4.65 E F0 1.249(if the)144 537.6 R F13.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 F (ariable)-.25 E F3(MAPFILE)3.749 E F0 1.249(is the def)3.499 F(ault)-.1 E F2(arr)3.748 E(ay)-.15 E F0 6.248(.O)C 1.248(ptions, if supplied,) --6.248 F(ha)144 427.2 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 439.2 Q F0 .91 -(The \214rst character of)180 439.2 R F2(delim)3.41 E F0 .911 +-6.248 F(ha)144 549.6 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 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 451.2 Q F0(is the empty string,)2.5 E F1 +(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 F1144 463.2 Q F0(Cop)180 463.2 Q 2.5(ya)-.1 G 2.5 +2.5 E(.)-.55 E F1144 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 F1144 475.2 Q F0(Be)180 -475.2 Q(gin assigning to)-.15 E F2(arr)2.83 E(ay)-.15 E F0(at inde)2.82 +2.5 E F0(is 0, all lines are copied.)2.5 E F1144 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 F1144 487.2 Q F0 -(Discard the \214rst)180 487.2 Q F2(count)2.5 E F0(lines read.)2.5 E F1 -144 499.2 Q F0(Remo)180 499.2 Q .3 -.15(ve a t)-.15 H(railing).15 +(xi)-.15 G 2.5(s0)-2.5 G(.)-2.5 E F1144 609.6 Q F0 +(Discard the \214rst)180 609.6 Q F2(count)2.5 E F0(lines read.)2.5 E F1 +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 F1144 511.2 Q F0 -(Read lines from \214le descriptor)180 511.2 Q F2(fd)2.5 E F0 -(instead of the standard input.)2.5 E F1144 523.2 Q F0(Ev)180 -523.2 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 F1144 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 F1144 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 F12.5 E F0 -(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 535.2 -Q F0(Specify the number of lines read between each call to)180 535.2 Q -F2(callbac)2.5 E(k)-.2 E F0(.).67 E(If)144 552 Q F12.968 E F0 .467 -(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 +(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 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 F12.968 E F0 +.467(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 (he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .261(plied the inde)144 564 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 576 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E +(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 588 Q -(If not supplied with an e)144 604.8 Q(xplicit origin,)-.15 E F1 +(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 621.6 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 633.6 Q -.25(va)-.4 G -(lid or unassignable, or if).25 E F2(arr)2.5 E(ay)-.15 E F0 -(is not an inde)2.5 E -.15(xe)-.15 G 2.5(da).15 G(rray)-2.5 E(.)-.65 E -F1(popd)108 650.4 Q F0<5bad>2.5 E F1(n)A F0 2.5(][)C(+)-2.5 E F2(n)A F0 -2.5(][)C-2.5 E F2(n)A F0(])A(Remo)144 662.4 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 -674.4 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 686.4 Q F1144 698.4 Q F0 .551 -(Suppresses the normal change of directory when remo)180 698.4 R .551 -(ving directories from the stack, so)-.15 F -(that only the stack is manipulated.)180 710.4 Q(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(66)193.45 E 0 Cg EP +(before assigning to it.)2.5 E(GNU Bash 5.0)72 768 Q(2018 August 7) +145.395 E(66)194.555 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(+)144 84 Q/F2 10/Times-Italic@0 SF(n)A F0(Remo)180 84 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 96 -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 -F3(popd +1)2.5 E F0(the second.)2.5 E F1144 108 Q F2(n)A F0(Remo)180 -108 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 120 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 136.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 148.8 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 +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-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 F1144 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 +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 F3(popd +1)2.5 E F0(the second.)2.5 E F1144 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 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.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 160.8 Q -(ails.)-.1 E F1(printf)108 177.6 Q F0([)2.5 E F1A F2(var)2.5 E F0 +(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 F1A F2(var)2.5 E F0 (])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.436 -(Write the formatted)144 189.6 R F2(ar)3.936 E(guments)-.37 E F0 1.437 +(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 F13.937 E F0 .126 -(option causes the output to be assigned to the v)144 201.6 R(ariable) +(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 213.6 Q(The)144 237.6 Q F2(format)3.017 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.017 F .704(simply copied to standard output, charact\ -er escape sequences, which are con)144 249.6 R -.15(ve)-.4 G .703 +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 261.6 R .037 -(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 273.6 Q(gument)-.37 E F0 +\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 285.6 Q -(xtensions:)-.15 E F1(%b)144 297.6 Q F0(causes)180 297.6 Q F1(printf) +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 .096(in the)2.596 F(same w)180 309.6 Q(ay as) --.1 E F1(echo \255e)2.5 E F0(.)A F1(%q)144 321.6 Q F0(causes)180 321.6 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 333.6 Q F1(%\()144 345.6 Q F2(datefmt)A F1(\)T)A F0(causes) -180 357.6 Q F1(printf)4.403 E F0 1.904 +(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 369.6 R F2 +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 .292(of seconds since the epoch.)180 -381.6 R -1 -.8(Tw o)5.293 H .293(special ar)3.593 F .293(gument v)-.18 F +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 393.6 R +(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 405.6 R -.15 +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 417.6 Q(vior)-.2 E(.)-.55 E(Ar)144 434.4 Q +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 446.4 R 1.259 +(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.259(alue is the)-.25 F(ASCII v)144 458.4 Q(alue of the follo) --.25 E(wing character)-.25 E(.)-.55 E(The)144 475.2 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 487.2 Q(guments)-.37 E -F0 .033(than are supplied, the e)2.533 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 .034(alue or null string,) --.25 F(as appropriate, had been supplied.)144 499.2 Q(The return v)5 E +-.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 516 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C --2.5 E F2(n)A F0(])A F1(pushd)108 528 Q F0([)2.5 E F1A 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 540 R 3.139(wt)-.25 -G .639(op of the)-3.139 F .416(stack the current w)144 552 R .416 +108 616.8 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C +-2.5 E F2(n)A F0(])A F1(pushd)108 628.8 Q F0([)2.5 E F1A 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.917(od)-.1 G(irectories)-2.917 E 1.625 -(and returns 0, unless the directory stack is empty)144 564 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 576 Q F1 -144 588 Q F0 1.811(Suppresses the normal change of directory when\ - rotating or adding directories to the)180 588 R -(stack, so that only the stack is manipulated.)180 600 Q F1(+)144 612 Q -F2(n)A F0 1.268(Rotates the stack so that the)180 612 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 624 Q F0 2.5(,s)C -(tarting with zero\) is at the top.)-2.5 E F1144 636 Q F2(n)A F0 .92 -(Rotates the stack so that the)180 636 R F2(n)3.42 E F0 .92 +(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 676.8 Q +F1144 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 August 7)145.395 E(67)194.555 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 +SF144 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 648 Q F0 2.5(,s)C(tarting with zero\) is at the top.)-2.5 -E F2(dir)144.35 660 Q F0(Adds)180 660 Q F2(dir)3.138 E F0 .288 +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 672 Q(gument to the)-.18 E F1(cd) -2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .488(If the)144 688.8 R F1(pushd)2.988 +(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 700.8 R F2(dir) +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 712.8 R 3.346(,an)-.65 G(on-e)-3.346 E .847(xistent\ +(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 724.8 Q 2.5(wc)-.25 G(urrent directory f)-2.5 -E(ails.)-.1 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(67)193.45 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(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 +-.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 -108 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 .181 -(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1(set) -2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264(enabled. If) -144 120 R(the)3.264 E F13.264 E F0 .763 +213.6 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 +.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1 +(set)2.681 E F0 -.2(bu)2.681 G .182(iltin command is).2 F 3.264 +(enabled. If)144 225.6 R(the)3.264 E F13.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-3.817 E/F2 10 -/Times-Italic@0 SF(aname)3.817 E F0 3.817(][)C F1-3.817 E F2 -(delim)3.817 E F0 3.817(][)C F1-3.817 E F2(te)3.817 E(xt)-.2 E F0 -3.817(][)C F1-3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816 -(][)C F1-3.816 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1 --3.816 E F2(pr)3.816 E(ompt)-.45 E F0 3.816(][)C F1-3.816 E -F2(timeout)3.816 E F0 3.816(][)C F1-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 -F13.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 + 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-3.817 E F2 +(aname)3.817 E F0 3.817(][)C F1-3.817 E F2(delim)3.817 E F0 3.817 +(][)C F1-3.817 E F2(te)3.817 E(xt)-.2 E F0 3.817(][)C F1 +-3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1-3.816 E +F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1-3.816 E F2(pr) +3.816 E(ompt)-.45 E F0 3.816(][)C F1-3.816 E F2(timeout)3.816 E F0 +3.816(][)C F1-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 F13.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 220.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 232.8 Q F0 +(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 .532(assigned empty v)144 244.8 R 3.032(alues. The)-.25 F .532 +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 256.8 R .197 +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 .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 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 -280.8 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 292.8 Q F2(aname)2.5 E F0 1.049 -(The w)180 304.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 F1144 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.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 +(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 F1144 328.8 Q F2(delim)2.5 E F0 -1.318(The \214rst character of)180 340.8 R F2(delim)3.818 E F0 1.317 +E(guments are ignored.)-.18 E F1144 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 352.8 Q F0(is the empty string,)2.5 E F1 +(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 -144 364.8 Q F0 .372 -(If the standard input is coming from a terminal,)180 364.8 R F1 -.18 +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 376.8 R .218 +.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 388.8 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E +(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 F1144 400.8 Q F2(te)2.5 E(xt) --.2 E F0(If)180 400.8 Q F1 -.18(re)2.715 G(adline).18 E F0 .216 +(ault \214lename completion.)-.1 E F1144 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 412.8 Q(gins.)-.15 E F1144 424.8 Q F2(nc)2.5 E -(har)-.15 E(s)-.1 E F1 -.18(re)180 436.8 S(ad).18 E F0 1.395 +-.25 F(ing be)180 518.4 Q(gins.)-.15 E F1144 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 448.8 Q(ut honors a delimiter if fe)-.2 E(wer than) +-.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 F1144 -460.8 Q F2(nc)2.5 E(har)-.15 E(s)-.1 E F1 -.18(re)180 472.8 S(ad).18 E +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 484.8 R F1 -.18(re) +(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 496.8 +(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 508.8 R .608 +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 520.8 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 F1180 532.8 Q F0 -(option belo)2.5 E(w\).)-.25 E F1144 544.8 Q F2(pr)2.5 E(ompt)-.45 -E F0(Display)180 556.8 Q F2(pr)3.661 E(ompt)-.45 E F0 1.161 +(xception of backslash; see the)-.15 F F1180 638.4 Q F0 +(option belo)2.5 E(w\).)-.25 E F1144 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 568.8 Q +-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 -144 580.8 Q F0 .543(Backslash does not act as an escape character) -180 580.8 R 5.543(.T)-.55 G .544 -(he backslash is considered to be part of)-5.543 F(the line.)180 592.8 Q +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(the line.)180 698.4 Q (In particular)5 E 2.5(,ab)-.4 G(ackslash-ne)-2.5 E (wline pair may not be used as a line continuation.)-.25 E F1144 -604.8 Q F0(Silent mode.)180 604.8 Q -(If input is coming from a terminal, characters are not echoed.)5 E F1 -144 616.8 Q F2(timeout)2.5 E F0(Cause)180 628.8 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 640.8 R F2(timeout)3.061 E +710.4 Q F0(Silent mode.)180 710.4 Q +(If input is coming from a terminal, characters are not echoed.)5 E +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(68)194.555 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 +SF144 84 Q/F2 10/Times-Italic@0 SF(timeout)2.5 E F0(Cause)180 96 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 108 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 652.8 Q +3.061 F(with a fractional portion follo)180 120 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 -664.8 R .506(fect when reading)-.25 F .59(from re)180 676.8 R .59 +132 R .506(fect when reading)-.25 F .59(from re)180 144 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 688.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 700.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 712.8 R -.15(ex)2.5 G -(it status is greater than 128 if the timeout is e).15 E(xceeded.)-.15 E -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(68)193.45 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 -SF144 84 Q/F2 10/Times-Italic@0 SF(fd)2.5 E F0 -(Read input from \214le descriptor)180 84 Q F2(fd)2.5 E F0(.)A .476 -(If no)144 100.8 R F2(names)3.336 E F0 .476 +(artial input read into the speci\214ed).15 F -.25(va)180 156 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 168 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 +180 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) +.15 E(xceeded.)-.15 E F1144 192 Q F2(fd)2.5 E F0 +(Read input from \214le descriptor)180 192 Q F2(fd)2.5 E F0(.)A .476 +(If no)144 208.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 9/Times-Bold@0 SF(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 112.8 R F1 -.18(re)3.273 G(ad) +(unless end-of-\214le is encountered,)144 220.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 124.8 S 2.004 +-.25(va)144 232.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 136.8 Q(gument to)-.18 E F1 -2.5 E F0(.)A F1 -.18(re)108 153.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A +(descriptor is supplied as the ar)144 244.8 Q(gument to)-.18 E F1 +2.5 E F0(.)A F1 -.18(re)108 261.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A -(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 165.6 R -.15(ve)-.25 G +(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 273.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 177.6 R +(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 285.6 R 1.096(If the)6.096 F F13.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 189.6 Q 3.334(ed. The) +(names)3.597 E F0 1.097(are so)3.597 F(mark)144 297.6 Q 3.334(ed. The) -.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 (ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) -3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .776(ables to associati)144 201.6 R 1.076 -.15(ve a)-.25 H 3.276 +-.25 E .776(ables to associati)144 309.6 R 1.076 -.15(ve a)-.25 H 3.276 (rrays. If).15 F .777(both options are supplied,)3.276 F F13.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 213.6 R -.15(ve) +3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 321.6 R -.15(ve) -.25 G .521(n, or if the).15 F F13.021 E F0 .521 (option is supplied, a list of all readonly names is printed.)3.021 F .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 225.6 R(The)5.296 E F1 +to a subset of the set of readonly names.)144 333.6 R(The)5.296 E F1 2.796 E F0(option)2.796 E .786 (causes output to be displayed in a format that may be reused as input.) -144 237.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 -249.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +144 345.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 +357.6 Q .717(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 261.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +144 369.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 F12.76 E F0 .26 -(is supplied with a)2.76 F F2(name)144.36 273.6 Q F0 -(that is not a function.)2.68 E F1 -.18(re)108 290.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 302.4 R +(is supplied with a)2.76 F F2(name)144.36 381.6 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 398.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 410.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 314.4 R -.15(xe) +(the return status is that of the last command e)144 422.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 326.4 R 3.738(,t)-.4 G 1.238 +G(cuted).15 E 1.238(by a trap handler)144 434.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.033(before the trap handler)144 -338.4 R 6.033(.I)-.55 G(f)-6.033 E F1 -.18(re)3.533 G(tur).18 E(n)-.15 E +446.4 R 6.033(.I)-.55 G(f)-6.033 E F1 -.18(re)3.533 G(tur).18 E(n)-.15 E F0 1.033(is e)3.533 F -.15(xe)-.15 G 1.033(cuted during a).15 F F1(DEB) 3.532 E(UG)-.1 E F0 1.032(trap, the last command used to)3.532 F .389 -(determine the status is the last command e)144 350.4 R -.15(xe)-.15 G +(determine the status is the last command e)144 458.4 R -.15(xe)-.15 G .389(cuted by the trap handler before).15 F F1 -.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 362.4 Q F1 -.18(re)2.584 G(tur).18 E(n)-.15 E F0 .084 +G(d.).1 E(If)144 470.4 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 374.4 R -.15(xe)-.15 G .588 +(causes the shell to stop e)144 482.4 R -.15(xe)-.15 G .588 (cuting that script and return either).15 F F2(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 386.4 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F +144 494.4 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 398.4 R .444 +(its least signi\214cant 8 bits.)144 506.4 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 410.4 R -.15 +(ment, or is used outside a function and not during e)144 518.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.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E -.749(mand associated with the)144 422.4 R F1(RETURN)3.249 E F0 .749 +.749(mand associated with the)144 530.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 434.4 Q F1 -(set)108 451.2 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C +G .75(cution resumes after the function).15 F(or script.)144 542.4 Q F1 +(set)108 559.2 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C F1-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E -F0(...])2.5 E F1(set)108 463.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 +F0(...])2.5 E F1(set)108 571.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 475.2 S .836 +(g)-.37 E F0(...])2.5 E -.4(Wi)144 583.2 S .836 (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 487.2 +(reused as input for setting or resetting the currently-set v)144 595.2 R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 -(riables cannot be).25 F 2.912(reset. In)144 499.2 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 511.2 R 1.031(options are speci\214ed, the)3.53 F +(riables cannot be).25 F 2.947(reset. In)144 607.2 R F2 .447(posix mode) +2.947 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.53 +(locale. When)144 619.2 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 523.2 R 1.623 +1.624(after option processing are treated as v)144 631.2 R 1.623 (alues for the positional parameters and are assigned, in)-.25 F(order) -144 535.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 +144 643.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 F1144 547.2 Q -F0 1.377(Each v)184 547.2 R 1.377 +-.15(ve t)-.2 H(he follo).15 E(wing meanings:)-.25 E F1144 655.2 Q +F0 1.377(Each v)184 655.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 559.2 Q(ed for e)-.1 E(xport to the en)-.15 -E(vironment of subsequent commands.)-.4 E F1144 571.2 Q F0 .132 -(Report the status of terminated background jobs immediately)184 571.2 R +1.378(ute and)-.2 F(mark)184 667.2 Q(ed for e)-.1 E(xport to the en)-.15 +E(vironment of subsequent commands.)-.4 E F1144 679.2 Q F0 .132 +(Report the status of terminated background jobs immediately)184 679.2 R 2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 583.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F1144 595.2 Q F0 -.087(Exit immediately if a)184 595.2 R F2(pipeline)2.587 E F0 .087 +(primary prompt.)184 691.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) +-.25 H(nly when job control is enabled.).15 E F1144 703.2 Q F0 +.087(Exit immediately if a)184 703.2 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 607.2 Q +F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 715.2 Q F2 1.521(compound command)4.021 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 .079(The shell does not e)184 -619.2 R .079(xit if the command that f)-.15 F .08 -(ails is part of the command list immediately)-.1 F(follo)184 631.2 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 643.2 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 655.2 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 667.2 S .66(lue is being in).25 F -.15(ve)-.4 G .66 +727.2 R .079(xit if the command that f)-.15 F .08 +(ails is part of the command list immediately)-.1 F(GNU Bash 5.0)72 768 +Q(2018 August 7)145.395 E(69)194.555 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(follo)184 84 Q +1.655(wing a)-.25 F/F1 10/Times-Bold@0 SF(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 96 +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 108 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 120 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 679.2 R 1.112(ailed while)-.1 F +(non-zero status because a command f)184 132 R 1.112(ailed while)-.1 F F13.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 691.2 R 2.677 +(eing ignored, the shell does)-3.612 F .177(not e)184 144 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 703.2 R .617 +(option applies to)2.678 F .618(the shell en)184 156 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 715.2 R(ONMENT) --.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 +-.4 F/F2 9/Times-Bold@0 SF .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR) +184 168 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 727.2 -Q(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(69)193.45 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 2.042 -(If a compound command or shell function e)184 84 R -.15(xe)-.15 G 2.042 -(cutes in a conte).15 F 2.042(xt where)-.15 F/F1 10/Times-Bold@0 SF -4.542 E F0 2.042(is being)4.542 F 1.435 -(ignored, none of the commands e)184 96 R -.15(xe)-.15 G 1.436 -(cuted within the compound command or function).15 F .194 -(body will be af)184 108 R .194(fected by the)-.25 F F12.694 E F0 -.193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 +(xe)-.15 G .643(cuting all).15 F(the commands in the subshell.)184 180 Q +2.042(If a compound command or shell function e)184 198 R -.15(xe)-.15 G +2.042(cutes in a conte).15 F 2.042(xt where)-.15 F F14.542 E F0 +2.042(is being)4.542 F 1.435(ignored, none of the commands e)184 210 R +-.15(xe)-.15 G 1.436(cuted within the compound command or function).15 F +.194(body will be af)184 222 R .194(fected by the)-.25 F F12.694 E +F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 2.693 E F0 .193(is set and a command returns a f)2.693 F(ailure) --.1 E 3.39(status. If)184 120 R 3.39(ac)3.39 G .89 +-.1 E 3.39(status. If)184 234 R 3.39(ac)3.39 G .89 (ompound command or shell function sets)-3.39 F F13.39 E F0 .89 (while e)3.39 F -.15(xe)-.15 G .89(cuting in a conte).15 F(xt)-.15 E -(where)184 132 Q F13.154 E F0 .654 +(where)184 246 Q F13.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 144 Q F1 -144 156 Q F0(Disable pathname e)184 156 Q(xpansion.)-.15 E F1 -144 168 Q F0 2.238(Remember the location of commands as the)184 -168 R 4.738(ya)-.15 G 2.239(re look)-4.738 F 2.239(ed up for e)-.1 F +(or the command containing the function call completes.)184 258 Q F1 +144 270 Q F0(Disable pathname e)184 270 Q(xpansion.)-.15 E F1 +144 282 Q F0 2.238(Remember the location of commands as the)184 +282 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 -180 Q(ault.)-.1 E F1144 192 Q F0 .514(All ar)184 192 R .514 +294 Q(ault.)-.1 E F1144 306 Q F0 .514(All ar)184 306 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 204 Q F1 -144 216 Q F0 .148(Monitor mode.)184 216 R .148 +(command, not just those that precede the command name.)184 318 Q F1 +144 330 Q F0 .148(Monitor mode.)184 330 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 228 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 .65(processes run in a separate)3.151 F .678 -(process group.)184 240 R .679(When a background job completes, the she\ -ll prints a line containing its)5.678 F -.15(ex)184 252 S(it status.).15 -E F1144 264 Q F0 .653(Read commands b)184 264 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 -276 Q(This is ignored by interacti)5 E .3 -.15(ve s)-.25 H(hells.).15 E -F1144 288 Q/F3 10/Times-Italic@0 SF(option\255name)2.5 E F0(The) -184 300 Q F3(option\255name)2.5 E F0(can be one of the follo)2.5 E -(wing:)-.25 E F1(allexport)184 312 Q F0(Same as)224 324 Q F12.5 E -F0(.)A F1(braceexpand)184 336 Q F0(Same as)224 348 Q F12.5 E F0(.) -A F1(emacs)184 360 Q F0 .089 -(Use an emacs-style command line editing interf)224 360 R 2.589 +(on systems that support it \(see)184 342 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 .65 +(processes run in a separate)3.151 F .678(process group.)184 354 R .679 +(When a background job completes, the shell prints a line containing it\ +s)5.678 F -.15(ex)184 366 S(it status.).15 E F1144 378 Q F0 .653 +(Read commands b)184 378 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 390 Q(This is ignored by interacti)5 E .3 +-.15(ve s)-.25 H(hells.).15 E F1144 402 Q/F3 10/Times-Italic@0 SF +(option\255name)2.5 E F0(The)184 414 Q F3(option\255name)2.5 E F0 +(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 426 Q F0 +(Same as)224 438 Q F12.5 E F0(.)A F1(braceexpand)184 450 Q F0 +(Same as)224 462 Q F12.5 E F0(.)A F1(emacs)184 474 Q F0 .089 +(Use an emacs-style command line editing interf)224 474 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 372 R -.15(ve)-.25 G 3.45(,u).15 G .95 +(when the shell is interacti)224 486 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 384 R(also af)2.5 E(fects the editing interf) +F0 2.5(option. This)224 498 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 396 Q(exit)-.18 E F0(Same as)224 396 Q F12.5 E F0(.)A F1 -(errtrace)184 408 Q F0(Same as)224 408 Q F12.5 E F0(.)A F1 -(functrace)184 420 Q F0(Same as)224 432 Q F12.5 E F0(.)A F1 -(hashall)184 444 Q F0(Same as)224 444 Q F12.5 E F0(.)A F1 -(histexpand)184 456 Q F0(Same as)224 468 Q F12.5 E F0(.)A F1 -(history)184 480 Q F0 .586(Enable command history)224 480 R 3.087(,a) +184 510 Q(exit)-.18 E F0(Same as)224 510 Q F12.5 E F0(.)A F1 +(errtrace)184 522 Q F0(Same as)224 522 Q F12.5 E F0(.)A F1 +(functrace)184 534 Q F0(Same as)224 546 Q F12.5 E F0(.)A F1 +(hashall)184 558 Q F0(Same as)224 558 Q F12.5 E F0(.)A F1 +(histexpand)184 570 Q F0(Same as)224 582 Q F12.5 E F0(.)A F1 +(history)184 594 Q F0 .586(Enable command history)224 594 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 492 Q +(.)A F0 .587(This option is)5.087 F(on by def)224 606 Q (ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -504 Q(eeof)-.18 E F0 1.657(The ef)224 516 R 1.657 +618 Q(eeof)-.18 E F0 1.657(The ef)224 630 R 1.657 (fect is as if the shell command)-.25 F/F5 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 -528 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 540 S(yw).1 E(ord)-.1 E F0(Same as)224 552 Q F1 -2.5 E F0(.)A F1(monitor)184 564 Q F0(Same as)224 564 Q F12.5 -E F0(.)A F1(noclob)184 576 Q(ber)-.1 E F0(Same as)224 588 Q F12.5 -E F0(.)A F1(noexec)184 600 Q F0(Same as)224 600 Q F12.5 E F0(.)A -F1(noglob)184 612 Q F0(Same as)224 612 Q F12.5 E F0(.)A F1(nolog) -184 624 Q F0(Currently ignored.)224 624 Q F1(notify)184 636 Q F0 -(Same as)224 636 Q F12.5 E F0(.)A F1(nounset)184 648 Q F0(Same as) -224 648 Q F12.5 E F0(.)A F1(onecmd)184 660 Q F0(Same as)224 660 Q -F12.5 E F0(.)A F1(ph)184 672 Q(ysical)-.15 E F0(Same as)224 672 Q -F12.5 E F0(.)A F1(pipefail)184 684 Q F0 1.029 -(If set, the return v)224 684 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 696 -R 1.136 -(xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 708 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(70)193.45 E 0 Cg EP +642 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 654 S(yw).1 E(ord)-.1 E F0(Same as)224 666 Q F1 +2.5 E F0(.)A F1(monitor)184 678 Q F0(Same as)224 678 Q F12.5 +E F0(.)A F1(noclob)184 690 Q(ber)-.1 E F0(Same as)224 702 Q F12.5 +E F0(.)A F1(noexec)184 714 Q F0(Same as)224 714 Q F12.5 E F0(.)A +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(70)194.555 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(posix)184 84 Q F0 2.09(Change the beha)224 84 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 96 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.462 E(w)-.25 E 2.306 -(for a reference to a document that details ho)224 108 R 4.807(wp)-.25 G +SF(noglob)184 84 Q F0(Same as)224 84 Q F12.5 E F0(.)A F1(nolog)184 +96 Q F0(Currently ignored.)224 96 Q F1(notify)184 108 Q F0(Same as)224 +108 Q F12.5 E F0(.)A F1(nounset)184 120 Q F0(Same as)224 120 Q F1 +2.5 E F0(.)A F1(onecmd)184 132 Q F0(Same as)224 132 Q F12.5 +E F0(.)A F1(ph)184 144 Q(ysical)-.15 E F0(Same as)224 144 Q F12.5 +E F0(.)A F1(pipefail)184 156 Q F0 1.029(If set, the return v)224 156 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 168 R +1.136 +(xit with a non-zero status, or zero if all commands in the pipeline) +-.15 F -.15(ex)224 180 S(it successfully).15 E 5(.T)-.65 G +(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 192 Q F0 +2.09(Change the beha)224 192 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 +204 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.462 E(w)-.25 E 2.306 +(for a reference to a document that details ho)224 216 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 -120 Q(vior)-.2 E(.)-.55 E F1(pri)184 132 Q(vileged)-.1 E F0(Same as)224 -144 Q F12.5 E F0(.)A F1 -.1(ve)184 156 S(rbose).1 E F0(Same as)224 -156 Q F12.5 E F0(.)A F1(vi)184 168 Q F0 1.466 -(Use a vi-style command line editing interf)224 168 R 3.965(ace. This) +228 Q(vior)-.2 E(.)-.55 E F1(pri)184 240 Q(vileged)-.1 E F0(Same as)224 +252 Q F12.5 E F0(.)A F1 -.1(ve)184 264 S(rbose).1 E F0(Same as)224 +264 Q F12.5 E F0(.)A F1(vi)184 276 Q F0 1.466 +(Use a vi-style command line editing interf)224 276 R 3.965(ace. This) -.1 F 1.465(also af)3.965 F 1.465(fects the editing)-.25 F(interf)224 -180 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 -(xtrace)184 192 Q F0(Same as)224 192 Q F12.5 E F0(.)A(If)184 210 Q +288 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 +(xtrace)184 300 Q F0(Same as)224 300 Q F12.5 E F0(.)A(If)184 318 Q F13.052 E F0 .552(is supplied with no)3.052 F F2(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 -222 Q F0 1.072(is supplied with no)3.572 F F2(option\255name)3.572 E F0 +330 Q F0 1.072(is supplied with no)3.572 F F2(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 234 Q F1 -144 246 Q F0 -.45(Tu)184 246 S 1.071(rn on).45 F F2(privile)4.821 E -.1 +(option settings is displayed on the standard output.)184 342 Q F1 +144 354 Q F0 -.45(Tu)184 354 S 1.071(rn on).45 F F2(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 F3($ENV)3.572 E F0(and)3.322 E F3($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 258 R 1.5 +(cessed, shell functions are not inherited from the en)184 366 R 1.5 (vironment, and the)-.4 F F3(SHELLOPTS)4 E/F4 9/Times-Roman@0 SF(,)A F3 --.27(BA)184 270 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H) +-.27(BA)184 378 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H) .855 E F4(,)A F0(and)2.774 E F3(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 282 R .38 +(vironment,)-.4 E .38(are ignored.)184 390 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 294 R F12.961 E F0 .461 +(user \(group\) id, and the)184 402 R F12.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 306 Q .695 -.15(ve u)-.25 H .395 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 414 Q .695 -.15(ve u)-.25 H .395 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1 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 318 R -.45(Tu)5.386 G +E -.15(ve)-.25 G .386(user id is not reset.)184 426 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 330 Q F1144 342 Q F0 -(Exit after reading and e)184 342 Q -.15(xe)-.15 G(cuting one command.) -.15 E F1144 354 Q F0 -.35(Tr)184 354 S .044(eat unset v).35 F .044 +(set to the real user and group ids.)184 438 Q F1144 450 Q F0 +(Exit after reading and e)184 450 Q -.15(xe)-.15 G(cuting one command.) +.15 E F1144 462 Q F0 -.35(Tr)184 462 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 366 R 2.682 +as an)-.25 F .182(error when performing parameter e)184 474 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 378 R 3.246(,t)-.4 G .746 +(able or parameter)184 486 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 -390 Q F1144 402 Q F0(Print shell input lines as the)184 402 Q 2.5 -(ya)-.15 G(re read.)-2.5 E F1144 414 Q F0 .315(After e)184 414 R +498 Q F1144 510 Q F0(Print shell input lines as the)184 510 Q 2.5 +(ya)-.15 G(re read.)-2.5 E F1144 522 Q F0 .315(After e)184 522 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.236(or arithmetic)184 -426 R F1 -.25(fo)3.736 G(r).25 E F0 1.236(command, display the e)3.736 F +534 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 438 Q +(follo)3.486 E 1.236(wed by the com-)-.25 F(mand and its e)184 546 Q (xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 450 Q F0 2.578(The shell performs brace e)184 450 R 2.578 +144 558 Q F0 2.578(The shell performs brace e)184 558 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 462 Q -(ault.)-.1 E F1144 474 Q F0 .214(If set,)184 474 R F1(bash)2.714 E +-.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 570 Q +(ault.)-.1 E F1144 582 Q F0 .214(If set,)184 582 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 (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 486 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +3.053(tors. This)184 594 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 498 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 510 Q F0 .104(If set, an)184 510 R 2.604(yt)-.15 G .104 +.15 F(tor)184 606 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 618 Q F0 .104(If set, an)184 618 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 522 R -.15(xe)-.15 G .838(cuted in a subshell en).15 +F .838(mands e)184 630 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 534 Q F1 -144 546 Q F0(Enable)184 546 Q F1(!)3.032 E F0 .532 +(trap is normally not inherited in)3.339 F(such cases.)184 642 Q F1 +144 654 Q F0(Enable)184 654 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 558 Q -.15 -(ve)-.25 G(.).15 E F1144 570 Q F0 .959 -(If set, the shell does not resolv)184 570 R 3.459(es)-.15 G .959 +F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 666 Q -.15 +(ve)-.25 G(.).15 E F1144 678 Q F0 .959 +(If set, the shell does not resolv)184 678 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 582 R 2.822(orking directory)-.1 F 7.822 +(that change the current w)184 690 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 594 R(def)2.685 +(ysical directory structure)-.05 F 2.685(instead. By)184 702 R(def)2.685 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 606 Q(.)-.65 E F1144 -618 Q F0 .89(If set, an)184 618 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 714 Q(.)-.65 E +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(71)194.555 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 +SF144 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 630 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 642 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 654 Q -F0 .401(If no ar)184 654 R .401(guments follo)-.18 F 2.901(wt)-.25 G +(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 F1144 120 Q +F0 .401(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.4 E(the positional parameters are set to the)184 666 Q F2 -(ar)2.5 E(g)-.37 E F0(s, e)A -.15(ve)-.25 G 2.5(ni).15 G 2.5(fs)-2.5 G -(ome of them be)-2.5 E(gin with a)-.15 E F12.5 E F0(.)A F1144 -678 Q F0 1.944(Signal the end of options, cause all remaining)184 678 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 690 R -F13.446 E F0(and)3.446 E F13.446 E F0 .945 +(Otherwise,)5.4 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 F12.5 E +F0(.)A F1144 144 Q F0 1.944 +(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.445(ea)-4.444 G 1.945 +(ssigned to the positional)-4.445 F 3.446(parameters. The)184 156 R F1 +3.446 E F0(and)3.446 E F13.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 702 Q .425(The options are of)144 -718.8 R 2.925(fb)-.25 G 2.925(yd)-2.925 G(ef)-2.925 E .425 +(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 730.8 R 2.678(f. The)-.25 F .178 +(to be turned of)144 196.8 R 2.678(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 -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(71)193.45 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 .066 -(current set of options may be found in)144 84 R/F1 10/Times-Bold@0 SF -<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 96 Q F1(shift)108 112.8 Q F0([)2.5 E/F2 10 -/Times-Italic@0 SF(n)A F0(])A .429(The positional parameters from)144 -124.8 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 136.8 Q F1($#)2.582 E F0(do)2.582 E .082(wn to)-.25 F F1($#) -2.582 E F0A 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 148.8 -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 160.8 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 172.8 Q F1(shopt)108 189.6 Q F0([) +-.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 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 220.8 Q F1(shift)108 237.6 Q F0([)2.5 E F2(n)A F0 +(])A .429(The positional parameters from)144 249.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 261.6 Q F1($#)2.582 +E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E F0A 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 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 285.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 297.6 Q F1(shopt)108 314.4 Q F0([) 2.5 E F1(\255pqsu)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(optname) --2.5 E F0(...])2.5 E -.8(To)144 201.6 S .64(ggle the v).8 F .639 +-2.5 E F0(...])2.5 E -.8(To)144 326.4 S .64(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 213.6 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H +(listed belo)144 338.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 F12.874 E F0 .375 (option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 F F12.875 E F0 .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 225.6 R .826 +(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 350.4 R .826 (ith no options, or with the)-.4 F F13.326 E F0 .825 (option, a list of all settable options is displayed, with an)3.326 F -.551(indication of whether or not each is set; if)144 237.6 R F2 +.551(indication of whether or not each is set; if)144 362.4 R F2 (optnames)3.052 E F0 .552 (are supplied, the output is restricted to those)3.052 F 2.55 -(options. The)144 249.6 R F12.55 E F0 .049(option causes output t\ +(options. The)144 374.4 R F12.55 E F0 .049(option causes output t\ o be displayed in a form that may be reused as input.)2.55 F(Other)5.049 -E(options ha)144 261.6 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 273.6 Q F0(Enable \(set\) each)180 -273.6 Q F2(optname)2.5 E F0(.)A F1144 285.6 Q F0 -(Disable \(unset\) each)180 285.6 Q F2(optname)2.5 E F0(.)A F1144 -297.6 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ -tus indicates whether the)180 297.6 R F2(optname)2.504 E F0(is)2.504 E -.256(set or unset.)180 309.6 R .256(If multiple)5.256 F F2(optname)2.756 +E(options ha)144 386.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 398.4 Q F0(Enable \(set\) each)180 +398.4 Q F2(optname)2.5 E F0(.)A F1144 410.4 Q F0 +(Disable \(unset\) each)180 410.4 Q F2(optname)2.5 E F0(.)A F1144 +422.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ +tus indicates whether the)180 422.4 R F2(optname)2.504 E F0(is)2.504 E +.256(set or unset.)180 434.4 R .256(If multiple)5.256 F F2(optname)2.756 E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G (ith)-2.756 E F12.756 E F0 2.755(,t)C .255 -(he return status is zero if)-2.755 F(all)180 321.6 Q F2(optnames)2.5 E -F0(are enabled; non-zero otherwise.)2.5 E F1144 333.6 Q F0 -(Restricts the v)180 333.6 Q(alues of)-.25 E F2(optname)2.5 E F0 +(he return status is zero if)-2.755 F(all)180 446.4 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E F1144 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 F12.5 E F0(option to the)2.5 -E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 350.4 R F1 +E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 475.2 R F1 3.124 E F0(or)3.124 E F13.124 E F0 .624(is used with no) 3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124 E F0(sho)3.124 E .624(ws only those options which are)-.25 F 2.234 -(set or unset, respecti)144 362.4 R -.15(ve)-.25 G(ly).15 E 7.234(.U) +(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 374.4 Q(ault.) +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 -391.2 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) +516 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) 4.045 F .696 (When setting or unsetting options, the return status is zero unless an) -144 403.2 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695 -(alid shell)-.25 F(option.)144 415.2 Q(The list of)144 432 Q F1(shopt) -2.5 E F0(options is:)2.5 E F1(assoc_expand_once)144 450 Q F0 1.944 -(If set, the shell suppresses multiple e)184 462 R -.25(va)-.25 G 1.945 -(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945 -(rray subscripts during).15 F .857(arithmetic e)184 474 R .857 +144 528 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695(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.944 +(If set, the shell suppresses multiple e)184 586.8 R -.25(va)-.25 G +1.945(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945 +(rray subscripts during).15 F .857(arithmetic e)184 598.8 R .857 (xpression e)-.15 F -.25(va)-.25 G .857(luation and while e).25 F -.15 (xe)-.15 G .857(cuting b).15 F .857(uiltins that can perform v)-.2 F -(ariable)-.25 E(assignments.)184 486 Q F1(autocd)144 498 Q F0 .199 -(If set, a command name that is the name of a directory is e)184 498 R +(ariable)-.25 E(assignments.)184 610.8 Q F1(autocd)144 622.8 Q F0 .199 +(If set, a command name that is the name of a directory is e)184 622.8 R -.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 510 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 522 Q(ars)-.1 E F0 .156(If set, an ar)184 534 R .156 +F1(cdable_v)144 646.8 Q(ars)-.1 E F0 .156(If set, an ar)184 658.8 R .156 (gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155 (iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 546 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 558 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 -558 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 -(corrected. The)184 570 R 1.488(errors check)3.988 F 1.487 +682.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 +(corrected. The)184 694.8 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 582 R 4.57 -.65(y. I) +-.4 G(nd)-3.987 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 594 Q(This option is only used by interacti)5 -E .3 -.15(ve s)-.25 H(hells.).15 E F1(checkhash)144 606 Q F0 .737 -(If set,)184 618 R F1(bash)3.237 E F0 .736 +(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(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(72)194.555 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 .737(If set,)184 96 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 630 +(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 642 Q -F0 .448(If set,)184 654 R F1(bash)2.948 E F0 .448 +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 120 Q +F0 .448(If set,)184 132 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 666 R(an)3.439 E 3.439(yj)-.15 G +F -.15(ve)-.25 G 3.439(shell. If)184 144 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 678 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 690 Q -.1(wa)-.1 +(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.704 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 702 Q F0 1.09(If set,)184 -714 R F1(bash)3.59 E F0 1.09(checks the windo)3.59 F 3.59(ws)-.25 G 1.09 +(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 726 Q 2.5(,u)-.65 G -(pdates the v)-2.5 E(alues 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 F0(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(72)193.45 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(cmdhist)144 84 Q F0 1.202(If set,)184 84 R F1(bash)3.702 E F0 1.202 -(attempts to sa)3.702 F 1.502 -.15(ve a)-.2 H 1.202 +(uiltin\) command and, if)-.2 F(necessary)184 204 Q 2.5(,u)-.65 G +(pdates the v)-2.5 E(alues of)-.25 E F2(LINES)2.5 E F0(and)2.25 E F2 +(COLUMNS)2.5 E/F3 9/Times-Roman@0 SF(.)A F1(cmdhist)144 216 Q F0 1.202 +(If set,)184 216 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 -96 Q 6.133(.T)-.65 G 1.133(his allo)-6.133 F 1.133 +228 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 108 Q .613(ault, b)-.1 F .613 +(This option is enabled by)6.132 F(def)184 240 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 9/Times-Bold@0 SF(HIST)184 120 Q(OR)-.162 E -(Y)-.315 E/F3 9/Times-Roman@0 SF(.)A F1(compat31)144 132 Q F0 .42 -(If set,)184 144 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 156 R F1([[)2.961 E F0 .462 -(conditional command')2.962 F(s)-.55 E F1(=~)2.962 E F0 .462 +(ve u)-.15 H(nder).15 E F2(HIST)184 252 Q(OR)-.162 E(Y)-.315 E F3(.)A F1 +(compat31)144 264 Q F0 .42(If set,)184 276 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 288 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 168 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s) +(using the)184 300 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 180 R/F4 10/Times-Italic@0 SF(str)3.321 E +(use ASCII collation and)184 312 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 192 Q F4(str) -2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 204 Q F0 1.41(If set,) -184 216 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409 +.19 F 3.321(sc)-.55 G(ollation)-3.321 E(sequence and)184 324 Q F4(str) +2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 336 Q F0 1.41(If set,) +184 348 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 228 R F1([[)2.922 E F0 .422 +(string comparison when using the)184 360 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 240 R .481 +(vious item\) and the ef)184 372 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 252 Q +(ersions 3.2 and earlier)-.15 F(continue with the ne)184 384 Q (xt command in the list after one terminates due to an interrupt.)-.15 E -F1(compat40)144 264 Q F0 1.409(If set,)184 276 R F1(bash)3.909 E F0 +F1(compat40)144 396 Q F0 1.409(If set,)184 408 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 288 R F1([[)4.508 E F0 2.007 +(string comparison when using the)184 420 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 300 R +4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 432 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 -312 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 324 Q -(xt command in the list.)-.15 E F1(compat41)144 336 Q F0 1.483(If set,) -184 348 R F1(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F4(posix) -3.983 E F0 1.484 -(mode, treats a single quote in a double-quoted parameter)3.983 F -.15 -(ex)184 360 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 372 +444 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 456 Q +(xt command in the list.)-.15 E F1(compat41)144 468 Q F0 1.523(If set,) +184 480 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 +492 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 504 R .59(This is the beha)5.59 F .59(vior of)-.2 F .59 -(posix mode through v)184 384 R .589(ersion 4.1.)-.15 F .589(The def) +(posix mode through v)184 516 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 396 Q F1(compat42)144 408 Q -F0 1.796(If set,)184 420 R F1(bash)4.296 E F0 1.796 +(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 528 Q F1(compat42)144 540 Q +F0 1.796(If set,)184 552 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 432 S(pansion using quote remo).15 E -.25 -(va)-.15 G(l.).25 E F1(compat43)144 444 Q F0 .141(If set,)184 456 R F1 +4.296 F(ord)-.1 E -.15(ex)184 564 S(pansion using quote remo).15 E -.25 +(va)-.15 G(l.).25 E F1(compat43)144 576 Q F0 .141(If set,)184 588 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 468 R .912(gument to)-.18 F F1 +(pound array assignment as an ar)184 600 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 480 S .353 +(ord e)-.1 F .913(xpansion errors non-)-.15 F -.1(fa)184 612 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 492 S 1.057(tal errors that cause the shell to e).1 +-2.852 E -.1(fa)184 624 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 504 R -.15(xe)-.15 G .375(cuted \(this allo).15 F +.375(function is e)184 636 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 516 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 -(compat44)144 528 Q F0 .441(If set,)184 540 R F1(bash)2.941 E F0(sa) +(the caller')184 648 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 +(compat44)144 660 Q F0 .441(If set,)184 672 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 -552 Q 2.5(ya)-.15 G(re used, re)-2.5 E -.05(ga)-.15 G +684 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 564 Q F0 .654 -(If set,)184 576 R F1(bash)3.153 E F0 .653(quotes all shell metacharact\ +(ugging mode is enabled.)-.2 E F1(complete_fullquote)144 696 Q F0 .654 +(If set,)184 708 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 588 R 1.524(If not set,)6.524 F F1(bash)4.024 E +(forming completion.)184 720 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 -600 R .028(metacharacters appear in shell v)184 612 R .028 +(etacharacters such as the dollar sign)-4.024 F(GNU Bash 5.0)72 768 Q +(2018 August 7)145.395 E(73)194.555 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 2.667(from the se\ +t of characters that will be quoted in completed \214lenames when these) +184 84 R .028(metacharacters appear in shell v)184 96 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 624 R 1.073 +(This means)5.029 F 1.073(that dollar signs in v)184 108 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 636 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 +(ev e)184 120 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 -648 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 660 Q +132 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 144 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 672 Q(expand)-.18 E F0 .486 -(If set,)184 684 R F1(bash)2.986 E F0 .486 +(ersions through 4.2.)-.15 E/F1 10/Times-Bold@0 SF(dir)144 156 Q(expand) +-.18 E F0 .486(If set,)184 168 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 -696 R .179(This changes the contents of the readline editing b)5.18 F +180 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 708 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(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E -(73)193.45 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(dirspell)144 84 Q F0 .858(If set,)184 84 R F1(bash)3.358 E F0 .858 +184 192 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 204 Q F0 .858(If set,)184 +204 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 96 Q(xist.)-.15 E -F1(dotglob)144 108 Q F0 .165(If set,)184 108 R F1(bash)2.665 E F0 .165 +(the directory name initially supplied does not e)184 216 Q(xist.)-.15 E +F1(dotglob)144 228 Q F0 .165(If set,)184 228 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 120 Q F1 -.63(``)2.5 G -.55(.').63 +(xpansion.)-.15 E(The \214lenames)184 240 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 132 Q F0 1.386(If set, a non-interacti) -184 132 R 1.686 -.15(ve s)-.25 H 1.386(hell will not e).15 F 1.386 +(is set.)2.5 E F1(execfail)144 252 Q F0 1.386(If set, a non-interacti) +184 252 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 144 Q(gument to the)-.18 +(cute the \214le speci\214ed as an).15 F(ar)184 264 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 156 Q F0 .717 -(If set, aliases are e)184 168 R .717(xpanded as described abo)-.15 F +-.1(fa)2.5 G(ils.).1 E F1(expand_aliases)144 276 Q F0 .717 +(If set, aliases are e)184 288 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 180 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(extdeb)144 192 Q(ug)-.2 E F0 .671(If set at shell in)184 204 R +(by def)184 300 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) +.15 E F1(extdeb)144 312 Q(ug)-.2 E F0 .671(If set at shell in)184 324 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 216 R F12.721 E(ugger)-.2 E F0 +.221(identical to the)184 336 R F12.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 228 Q -(uggers is enabled:)-.2 E F1(1.)184 240 Q F0(The)220 240 Q F14.25 +(cation, beha).2 F .22(vior intended for use by)-.2 F(deb)184 348 Q +(uggers is enabled:)-.2 E F1(1.)184 360 Q F0(The)220 360 Q F14.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 252 Q -(gument.)-.18 E F1(2.)184 264 Q F0 1.667(If the command run by the)220 -264 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 276 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 288 Q F0 .84 -(If the command run by the)220 288 R F1(DEB)3.34 E(UG)-.1 E F0 .841 +(number corresponding to each function name supplied as an ar)220 372 Q +(gument.)-.18 E F1(2.)184 384 Q F0 1.667(If the command run by the)220 +384 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 396 +Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 408 Q F0 .84 +(If the command run by the)220 408 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 300 S .488 +(exe)220 420 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 312 Q(ce)-.18 E F0 -.2(bu)2.5 G +(sour)220 432 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 324 Q F2 -.27(BA)220 324 S(SH_ARGC).27 E F0 +(n)-.15 E F0(.)A F1(4.)184 444 Q F2 -.27(BA)220 444 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 336 Q --.15(ve)-.15 G(.).15 E F1(5.)184 348 Q F0 1.637(Function tracing is ena\ -bled: command substitution, shell functions, and sub-)220 348 R -(shells in)220 360 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 +(are updated as described in their descriptions)3.154 F(abo)220 456 Q +-.15(ve)-.15 G(.).15 E F1(5.)184 468 Q F0 1.637(Function tracing is ena\ +bled: command substitution, shell functions, and sub-)220 468 R +(shells in)220 480 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 372 Q F0 1.082(Error tracing is enabled: comman\ -d substitution, shell functions, and subshells)220 372 R(in)220 384 Q +(traps.)2.5 E F1(6.)184 492 Q F0 1.082(Error tracing is enabled: comman\ +d substitution, shell functions, and subshells)220 492 R(in)220 504 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 396 Q F0 .4(If set, the e)184 396 R .4 +(extglob)144 516 Q F0 .4(If set, the e)184 516 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 408 Q -F0(are enabled.)2.5 E F1(extquote)144 420 Q F0 2.473(If set,)184 432 R +-.15 H(nder).15 E F1 -.1(Pa)2.9 G .4(thname Expan-).1 F(sion)184 528 Q +F0(are enabled.)2.5 E F1(extquote)144 540 Q F0 2.473(If set,)184 552 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 444 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 456 Q F0 -1.425(If set, patterns which f)184 456 R 1.425 +(pansions).15 E(enclosed in double quotes.)184 564 Q +(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 576 Q F0 +1.425(If set, patterns which f)184 576 R 1.425 (ail to match \214lenames during pathname e)-.1 F 1.424 -(xpansion result in an)-.15 F -.15(ex)184 468 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 480 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.936(If set, the suf)184 492 R<8c78>-.25 E .936(es speci\214ed by the) +(xpansion result in an)-.15 F -.15(ex)184 588 S(pansion error).15 E(.) +-.55 E F1 -.25(fo)144 600 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 +.936(If set, the suf)184 612 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 504 R .32 +-.25 F .937(ords to be ignored)-.1 F .32(when performing w)184 624 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 516 R F2 .447(SHELL V)2.947 F(ARIABLES)-1.215 E F0 +(pletions. See)184 636 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 528 Q(ault.)-.1 E F1(globasciiranges)144 540 Q F0 2.519 -(If set, range e)184 552 R 2.519 +184 648 Q(ault.)-.1 E F1(globasciiranges)144 660 Q F0 2.519 +(If set, range e)184 672 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 564 Q F0(abo)2.964 E -.15(ve)-.15 G 3.214(\)b).15 G(eha) +(Matching)184 684 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 576 R 3.52(sc)-.55 G 1.02 +-3.214 F 1.02(That is, the current locale')184 696 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 588 R F1(A) +(b)3.52 E F0 1.02(will not)3.52 F .956(collate between)184 708 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 600 Q(.)-.55 E -F1(globstar)144 612 Q F0 .519(If set, the pattern)184 612 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 624 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 -636 Q F1(gnu_errfmt)144 648 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 660 Q F1(histappend)144 -672 Q F0 .676 -(If set, the history list is appended to the \214le named by the v)184 -684 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 696 Q(xits, rather than o)-.15 E --.15(ve)-.15 G(rwriting the \214le.).15 E(GNU Bash 5.0)72 768 Q -(2018 March 15)144.29 E(74)193.45 E 0 Cg EP +(-case ASCII characters will collate)-.2 F(together)184 720 Q(.)-.55 E +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(74)194.555 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(histr)144 84 Q(eedit)-.18 E F0 .575(If set, and)184 96 R F1 -.18(re) +SF(globstar)144 84 Q F0 .519(If set, the pattern)184 84 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 96 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 +108 Q F1(gnu_errfmt)144 120 Q F0(If set, shell error messages are writt\ +en in the standard GNU error message format.)184 132 Q F1(histappend)144 +144 Q F0 .676 +(If set, the history list is appended to the \214le named by the v)184 +156 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 168 Q +(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1 +(histr)144 180 Q(eedit)-.18 E F0 .575(If set, and)184 192 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 108 Q F1(histv)144 120 Q -(erify)-.1 E F0 .403(If set, and)184 132 R F1 -.18(re)2.903 G(adline).18 +.576(ailed his-)-.1 F(tory substitution.)184 204 Q F1(histv)144 216 Q +(erify)-.1 E F0 .403(If set, and)184 228 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 144 R 5.661(.I)-.55 G .662 +2.903 F .661(passed to the shell parser)184 240 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 156 S -.25(ff).2 G(er).25 E +G(adline).18 E F0(editing)3.162 E -.2(bu)184 252 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 168 Q F0 1.182(If set, and)184 180 R F1 -.18(re)3.682 +(hostcomplete)144 264 Q F0 1.182(If set, and)184 276 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 -192 R 1.38(ord containing a)-.1 F F1(@)3.881 E F0 1.381 +288 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 9/Times-Bold@0 SF(READLINE)3.881 E F0(abo)184 204 Q -.15(ve)-.15 G -2.5(\). This).15 F(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 -216 Q F0(If set,)184 228 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 240 Q(exit)-.18 E F0 -.22(If set, command substitution inherits the v)184 252 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 264 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 276 Q -.1(ve)-.1 G(_comments).1 E F0 .33(If set, allo)184 288 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 300 R 1.267 -.15(ve s) --.25 H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve) --.15 G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 -312 Q(ault.)-.1 E F1(lastpipe)144 324 Q F0 .066 -(If set, and job control is not acti)184 324 R -.15(ve)-.25 G 2.566(,t) +F2(READLINE)3.881 E F0(abo)184 300 Q -.15(ve)-.15 G 2.5(\). This).15 F +(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 312 Q F0(If set,) +184 324 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 336 Q(exit)-.18 E F0 .22 +(If set, command substitution inherits the v)184 348 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 360 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 372 Q -.1(ve)-.1 G(_comments).1 E +F0 .33(If set, allo)184 384 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 396 R 1.267 -.15(ve s)-.25 +H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 +G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 408 Q +(ault.)-.1 E F1(lastpipe)144 420 Q F0 .066 +(If set, and job control is not acti)184 420 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 336 Q(vironment.)-.4 E F1(lithist)144 348 Q F0 .655(If set, and the) -184 348 R F1(cmdhist)3.155 E F0 .654 +184 432 Q(vironment.)-.4 E F1(lithist)144 444 Q F0 .655(If set, and the) +184 444 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 360 Q +(with embedded ne)184 456 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 -(localv)144 372 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 384 R +(localv)144 468 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 480 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 -396 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673 +492 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 408 Q -F1(login_shell)144 420 Q F0 .486 +(The nameref attrib)5.173 F .173(ute is not)-.2 F(inherited.)184 504 Q +F1(login_shell)144 516 Q F0 .486 (The shell sets this option if it is started as a login shell \(see)184 -432 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 444 S(lue may not be changed.).25 -E F1(mailwar)144 456 Q(n)-.15 E F0 .815(If set, and a \214le that)184 -468 R F1(bash)3.315 E F0 .814 +528 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 540 S(lue may not be changed.).25 +E F1(mailwar)144 552 Q(n)-.15 E F0 .815(If set, and a \214le that)184 +564 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 480 S 2.5(sc).1 G(heck)-2.5 E(ed, the message `)-.1 E +-.1(wa)184 576 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 492 -Q F0 .324(If set, and)184 504 R F1 -.18(re)2.824 G(adline).18 E F0 .324 +-.74 G 2.5(sd)-2.5 G(isplayed.)-2.5 E F1(no_empty_cmd_completion)144 588 +Q F0 .324(If set, and)184 600 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 516 Q F1 -(nocaseglob)144 528 Q F0 .437(If set,)184 540 R F1(bash)2.937 E F0 .436 +(completions when completion is attempted on an empty line.)184 612 Q F1 +(nocaseglob)144 624 Q F0 .437(If set,)184 636 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 552 S +H .436(ashion when performing pathname).05 F -.15(ex)184 648 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 564 Q F0 1.193(If set,)184 -576 R F1(bash)3.693 E F0 1.194(matches patterns in a case\255insensiti) +-.15(ve)-.15 G(\).).15 E F1(nocasematch)144 660 Q F0 1.193(If set,)184 +672 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 588 R -.15(xe)-.15 G(cuting).15 E F1(case)3.051 E F0 +F .551(while e)184 684 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 600 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ -le completions as part of programmable com-)-.15 F(pletion.)184 612 Q F1 -(nullglob)144 624 Q F0 .855(If set,)184 636 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 648 S -(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 -660 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 -672 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 684 Q(This option is enabled by def)5 E(ault.)-.1 E F1 -(pr)144 696 Q(omptv)-.18 E(ars)-.1 E F0 1.448 -(If set, prompt strings under)184 708 R 1.448(go parameter e)-.18 F -1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 720 -S .17(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 -(fter being e)-2.67 F .17(xpanded as described in)-.15 F F2(PR)2.671 E -(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 E(GNU Bash 5.0)72 -768 Q(2018 March 15)144.29 E(75)193.45 E 0 Cg EP +(wo)184 696 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ +le completions as part of programmable com-)-.15 F(pletion.)184 708 Q +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(75)194.555 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 -(This option is enabled by def)184 84 Q(ault.)-.1 E/F1 10/Times-Bold@0 -SF -.18(re)144 96 S(stricted_shell).18 E F0 1.069 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10/Times-Bold@0 +SF(nullglob)144 84 Q F0 .855(If set,)184 96 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 108 S +(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 +120 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 +132 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 144 Q(This option is enabled by def)5 E(ault.)-.1 E F1 +(pr)144 156 Q(omptv)-.18 E(ars)-.1 E F0 1.448 +(If set, prompt strings under)184 168 R 1.448(go parameter e)-.18 F +1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 180 +S .17(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 +(fter being e)-2.67 F .17(xpanded as described in)-.15 F/F2 9 +/Times-Bold@0 SF(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 192 Q(ault.)-.1 E F1 -.18(re) +144 204 S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 108 R/F2 9/Times-Bold@0 SF 1.069(RESTRICTED SHELL)3.569 F F0(belo) -184 120 Q 2.86(w\). The)-.25 F -.25(va)2.86 G .36 -(lue may not be changed.).25 F .36 +184 216 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 228 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 132 Q(wing the startup \214les to disco)-.25 E +(-).15 E(cuted, allo)184 240 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 144 Q(erbose)-.1 E F0 .502(If set, the)184 156 R F1 +F1(shift_v)144 252 Q(erbose)-.1 E F0 .502(If set, the)184 264 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 168 Q F1(sour) -144 180 Q(cepath)-.18 E F0 .77(If set, the)184 192 R F1(sour)3.27 E(ce) +(xceeds the number)-.15 F(of positional parameters.)184 276 Q F1(sour) +144 288 Q(cepath)-.18 E F0 .77(If set, the)184 300 R F1(sour)3.27 E(ce) -.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47 F .771(alue of)-.25 F F2 -.666(PA)3.271 G(TH)-.189 E F0 .771 (to \214nd the directory containing the)3.021 F -(\214le supplied as an ar)184 204 Q 2.5(gument. This)-.18 F -(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 216 Q F0 -(If set, the)184 228 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E +(\214le supplied as an ar)184 312 Q 2.5(gument. This)-.18 F +(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 324 Q F0 +(If set, the)184 336 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 244.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 256.8 R +108 352.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 364.8 R -.15(xe)-.15 G 1.002(cution of this shell until it recei).15 F -.15(ve) -.25 G 3.501(sa).15 G F2(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001 -(login shell cannot be)3.501 F .022(suspended; the)144 268.8 R F1 +(login shell cannot be)3.501 F .022(suspended; the)144 376.8 R F1 2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022 (rride this and force the suspension.).15 F .023(The return status is) -5.023 F 2.5(0u)144 280.8 S(nless the shell is a login shell and)-2.5 E +5.023 F 2.5(0u)144 388.8 S(nless the shell is a login shell and)-2.5 E F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 -E F1(test)108 297.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) -108 309.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 -(Return a status of 0 \(true\) or 1 \(f)144 309.6 R .877 +E F1(test)108 405.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) +108 417.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 +(Return a status of 0 \(true\) or 1 \(f)144 417.6 R .877 (alse\) depending on the e)-.1 F -.25(va)-.25 G .877 -(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 321.6 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 429.6 S(pr).2 E F0 5.53(.E).73 G .53 (ach operator and operand must be a separate ar)-5.53 F 3.03 (gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.08 -(primaries described abo)144 333.6 R 3.38 -.15(ve u)-.15 H(nder).15 E F2 +(primaries described abo)144 441.6 R 3.38 -.15(ve u)-.15 H(nder).15 E F2 (CONDITION)5.58 E 3.079(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A F1(test)7.579 E F0 3.079(does not accept an)5.579 F(y)-.15 E -(options, nor does it accept and ignore an ar)144 345.6 Q(gument of)-.18 +(options, nor does it accept and ignore an ar)144 453.6 Q(gument of)-.18 E F12.5 E F0(as signifying the end of options.)2.5 E .785 -(Expressions may be combined using the follo)144 363.6 R .786 +(Expressions may be combined using the follo)144 471.6 R .786 (wing operators, listed in decreasing order of prece-)-.25 F 3.412 -(dence. The)144 375.6 R -.25(eva)3.412 G .912 +(dence. The)144 483.6 R -.25(eva)3.412 G .912 (luation depends on the number of ar).25 F .911(guments; see belo)-.18 F 4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F -(used when there are \214v)144 387.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E F1(!)144 399.6 Q F3 -.2(ex)2.5 G(pr).2 E -F0 -.35(Tr)180 399.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 411.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 -.26(Returns the v)180 411.6 R .26(alue of)-.25 F F3 -.2(ex)2.76 G(pr).2 +(used when there are \214v)144 495.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G +(ore ar)-2.5 E(guments.)-.18 E F1(!)144 507.6 Q F3 -.2(ex)2.5 G(pr).2 E +F0 -.35(Tr)180 507.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 519.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 +.26(Returns the v)180 519.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 423.6 Q F3 -.2 -(ex)144 435.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 --.35(Tr)180 447.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 459.6 S +(rride the normal precedence of opera-).15 F(tors.)180 531.6 Q F3 -.2 +(ex)144 543.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 +-.35(Tr)180 555.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 567.6 S (pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 -471.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 488.4 Q F0(and)2.5 E +579.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 596.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 2.5(0a)144 506.4 S -.18(rg)-2.5 G(uments).18 E(The e) -180 518.4 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 530.4 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 542.4 Q +(guments.)-.18 E 2.5(0a)144 614.4 S -.18(rg)-2.5 G(uments).18 E(The e) +180 626.4 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 638.4 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 650.4 Q (xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 554.4 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 566.4 R .37(gument is)-.18 F F1(!)2.87 E F0 2.87(,t)C .37(he e)-2.87 +E 2.5(2a)144 662.4 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 674.4 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 578.4 R .38 +(gument is null.)-.18 F .379(If the \214rst ar)180 686.4 R .38 (gument is one of the unary conditional operators listed abo)-.18 F .68 --.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 590.4 Q .553 +-.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 698.4 Q .553 (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 602.4 Q +(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 710.4 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 614.4 S -.18(rg)-2.5 G -(uments).18 E .236(The follo)180 626.4 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 638.4 R 1.155 -.15 -(ve u)-.15 H(nder).15 E F2(CONDITION)3.355 E .855(AL EXPRESSIONS)-.18 F -F4(,)A F0(the)3.104 E .578(result of the e)180 650.4 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 662.4 R(The)6.333 E F13.833 -E F0(and)3.833 E F13.832 E F0 1.332 -(operators are considered binary operators when there are)3.832 F .558 -(three ar)180 674.4 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 -686.4 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 698.4 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 710.4 Q(xpression is f)-.15 E(alse.)-.1 E(GNU Bash 5.0) -72 768 Q(2018 March 15)144.29 E(76)193.45 E 0 Cg EP +(xpression is f)-.15 E(alse.)-.1 E(GNU Bash 5.0)72 768 Q(2018 August 7) +145.395 E(76)194.555 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(4a)144 84 S --.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 96 R .385 -(gument is)-.18 F/F1 10/Times-Bold@0 SF(!)2.885 E F0 2.885(,t)C .385 -(he result is the ne)-2.885 F -.05(ga)-.15 G .384(tion of the three-ar) -.05 F .384(gument e)-.18 F .384(xpression com-)-.15 F 1.647 -(posed of the remaining ar)180 108 R 4.147(guments. Otherwise,)-.18 F -1.647(the e)4.147 F 1.648(xpression is parsed and e)-.15 F -.25(va)-.25 -G(luated).25 E(according to precedence using the rules listed abo)180 -120 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 132 S 2.5(rm)-2.5 G(ore ar)-2.5 -E(guments)-.18 E 1.635(The e)180 144 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 156 -Q -.15(ve)-.15 G(.).15 E(When used with)144 174 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 190.8 Q F0 1.229(Print the accumulated user and system t\ -imes for the shell and for processes run from the shell.)144 190.8 R -(The return status is 0.)144 202.8 Q F1(trap)108 219.6 Q F0([)2.5 E F1 -(\255lp)A F0 2.5(][)C([)-2.5 E/F2 10/Times-Italic@0 SF(ar)A(g)-.37 E F0 -(])A F2(sigspec)2.5 E F0(...])2.5 E .703(The command)144 231.6 R F2(ar) -3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F -.15(xe)-.15 G .702 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E 2.5(3a)144 84 S +-.18(rg)-2.5 G(uments).18 E .236(The follo)180 96 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 108 R 1.155 -.15(ve u) +-.15 H(nder).15 E/F1 9/Times-Bold@0 SF(CONDITION)3.355 E .855 +(AL EXPRESSIONS)-.18 F/F2 9/Times-Roman@0 SF(,)A F0(the)3.104 E .578 +(result of the e)180 120 R .578(xpression is the result of the binary t\ +est using the \214rst and third ar)-.15 F(guments)-.18 E 1.333 +(as operands.)180 132 R(The)6.333 E/F3 10/Times-Bold@0 SF3.833 E +F0(and)3.833 E F33.832 E F0 1.332 +(operators are considered binary operators when there are)3.832 F .558 +(three ar)180 144 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 F +.558(gument is)-.18 F F3(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558 +(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F(o-ar)-.1 +E(gument)-.18 E .521(test using the second and third ar)180 156 R 3.021 +(guments. If)-.18 F .521(the \214rst ar)3.021 F .52(gument is e)-.18 F +(xactly)-.15 E F3(\()3.02 E F0 .52(and the third)3.02 F(ar)180 168 Q +.485(gument is e)-.18 F(xactly)-.15 E F3(\))2.985 E F0 2.985(,t)C .485 +(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18 +F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 180 Q +(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 192 S -.18(rg)-2.5 G +(uments).18 E .385(If the \214rst ar)180 204 R .385(gument is)-.18 F F3 +(!)2.885 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 +G .384(tion of the three-ar).05 F .384(gument e)-.18 F .384 +(xpression com-)-.15 F 1.647(posed of the remaining ar)180 216 R 4.147 +(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.648 +(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E +(according to precedence using the rules listed abo)180 228 Q -.15(ve) +-.15 G(.).15 E 2.5(5o)144 240 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 +E 1.635(The e)180 252 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 264 Q -.15(ve)-.15 G(.).15 E(When used with)144 282 Q F3(test) +2.5 E F0(or)2.5 E F3([)2.5 E F0 2.5(,t)C(he)-2.5 E F3(<)2.5 E F0(and)2.5 +E F3(>)2.5 E F0(operators sort le)2.5 E +(xicographically using ASCII ordering.)-.15 E F3(times)108 298.8 Q F0 +1.229(Print the accumulated user and system times for the shell and for\ + processes run from the shell.)144 298.8 R(The return status is 0.)144 +310.8 Q F3(trap)108 327.6 Q F0([)2.5 E F3(\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 .703(The command)144 339.6 R F4(ar)3.533 E(g)-.37 E F0 .703 +(is to be read and e)3.423 F -.15(xe)-.15 G .702 (cuted when the shell recei).15 F -.15(ve)-.25 G 3.202(ss).15 G -(ignal\(s\))-3.202 E F2(sigspec)3.202 E F0 5.702(.I).31 G(f)-5.702 E F2 +(ignal\(s\))-3.202 E F4(sigspec)3.202 E F0 5.702(.I).31 G(f)-5.702 E F4 (ar)3.532 E(g)-.37 E F0(is)3.422 E .608(absent \(and there is a single) -144 243.6 R F2(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F13.108 E +144 351.6 R F4(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F33.108 E F0 3.108(,e)C .608 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.659(\(the v)144 255.6 R .659(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 -(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) -144.34 267.6 Q F0 .58(is ignored by the shell and by the commands it in) -3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E -F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 -(been supplied, then the trap commands associated with each)144 279.6 R -F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 -F(gu-)-.18 E .86(ments are supplied or if only)144 291.6 R F13.36 -E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 +.659(\(the v)144 363.6 R .659(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F4(ar)3.488 E(g)-.37 E F0 .658 +(is the null string the signal speci\214ed by each)3.378 F F4(sigspec) +144.34 375.6 Q F0 .58(is ignored by the shell and by the commands it in) +3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F4(ar)3.411 E(g)-.37 E +F0 .581(is not present and)3.301 F F33.081 E F0(has)3.081 E 1.215 +(been supplied, then the trap commands associated with each)144 387.6 R +F4(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 +F(gu-)-.18 E .86(ments are supplied or if only)144 399.6 R F33.36 +E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F3(trap)3.36 E F0 .86 (prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 303.6 R F12.83 E F0 .33(option causes the shell \ +(signal. The)144 411.6 R F32.83 E F0 .33(option causes the shell \ to print a list of signal names and their corresponding num-)2.83 F 4.31 -(bers. Each)144 315.6 R F2(sigspec)4.65 E F0 1.811 -(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811 +(bers. Each)144 423.6 R F4(sigspec)4.65 E F0 1.811 +(is either a signal name de\214ned in <)4.62 F F4(signal.h)A F0 1.811 (>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E -(names are case insensiti)144 327.6 Q .3 -.15(ve a)-.25 H(nd the).15 E -/F3 9/Times-Bold@0 SF(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649 -(If a)144 345.6 R F2(sigspec)4.489 E F0(is)4.459 E F3(EXIT)4.149 E F0 -1.649(\(0\) the command)3.899 F F2(ar)4.479 E(g)-.37 E F0 1.649(is e) -4.369 F -.15(xe)-.15 G 1.649(cuted on e).15 F 1.648(xit from the shell.) --.15 F 1.648(If a)6.648 F F2(sigspec)4.488 E F0(is)4.458 E F3(DEB)144 -357.6 Q(UG)-.09 E/F4 9/Times-Roman@0 SF(,)A F0 1.167(the command)3.417 F -F2(ar)3.997 E(g)-.37 E F0 1.167(is e)3.887 F -.15(xe)-.15 G 1.167 -(cuted before e).15 F -.15(ve)-.25 G(ry).15 E F2 1.168(simple command) -3.667 F F0(,)A F2(for)3.668 E F0(command,)3.668 E F2(case)3.668 E F0 -(com-)3.668 E(mand,)144 369.6 Q F2(select)2.647 E F0 .147(command, e) -2.647 F -.15(ve)-.25 G .147(ry arithmetic).15 F F2(for)2.647 E F0 .146 +(names are case insensiti)144 435.6 Q .3 -.15(ve a)-.25 H(nd the).15 E +F1(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649(If a)144 453.6 R F4 +(sigspec)4.489 E F0(is)4.459 E F1(EXIT)4.149 E F0 1.649 +(\(0\) the command)3.899 F F4(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 F4(sigspec)4.488 E F0(is)4.458 E F1(DEB)144 465.6 Q +(UG)-.09 E F2(,)A F0 1.167(the command)3.417 F F4(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 F4 1.168(simple command)3.667 F F0(,)A F4(for)3.668 E F0 +(command,)3.668 E F4(case)3.668 E F0(com-)3.668 E(mand,)144 477.6 Q F4 +(select)2.647 E F0 .147(command, e)2.647 F -.15(ve)-.25 G .147 +(ry arithmetic).15 F F4(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 381.6 R F3 .145 +(cutes in a).15 F .145(shell function \(see)144 489.6 R F1 .145 (SHELL GRAMMAR)2.645 F F0(abo)2.395 E -.15(ve)-.15 G 2.646(\). Refer).15 -F .146(to the description of the)2.646 F F1(extdeb)2.646 E(ug)-.2 E F0 -.146(option to)2.646 F(the)144 393.6 Q F1(shopt)3.201 E F0 -.2(bu)3.201 -G .7(iltin for details of its ef).2 F .7(fect on the)-.25 F F1(DEB)3.2 E -(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F2(sigspec)3.54 E F0(is)3.51 E -F3(RETURN)3.2 E F4(,)A F0 .7(the com-)2.95 F(mand)144 405.6 Q F2(ar) +F .146(to the description of the)2.646 F F3(extdeb)2.646 E(ug)-.2 E F0 +.146(option to)2.646 F(the)144 501.6 Q F3(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 F3(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 +F1(RETURN)3.2 E F2(,)A F0 .7(the com-)2.95 F(mand)144 513.6 Q F4(ar) 3.473 E(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G .643 (cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.644(cuted with the).15 F F1(.)3.144 E F0(or)3.144 E F1(sour)3.144 E(ce) --.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 417.6 Q -.15(xe) --.15 G(cuting.).15 E .961(If a)144 435.6 R F2(sigspec)3.801 E F0(is) -3.771 E F3(ERR)3.461 E F4(,)A F0 .961(the command)3.211 F F2(ar)3.791 E +.644(cuted with the).15 F F3(.)3.144 E F0(or)3.144 E F3(sour)3.144 E(ce) +-.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 525.6 Q -.15(xe) +-.15 G(cuting.).15 E .961(If a)144 543.6 R F4(sigspec)3.801 E F0(is) +3.771 E F1(ERR)3.461 E F2(,)A F0 .961(the command)3.211 F F4(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(single simple command\), a list, or a compound command ret\ -urns a non\255zero e)144 447.6 R .185(xit status, subject to)-.15 F .452 -(the follo)144 459.6 R .452(wing conditions.)-.25 F(The)5.452 E F3(ERR) +urns a non\255zero e)144 555.6 R .185(xit status, subject to)-.15 F .452 +(the follo)144 567.6 R .452(wing conditions.)-.25 F(The)5.452 E F1(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 471.6 R .387(wing a)-.25 F F1(while) -2.887 E F0(or)2.887 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 F2(if)2.898 E F0 .388 -(statement, part)4.848 F .778(of a command e)144 483.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 +(mand list immediately follo)144 579.6 R .387(wing a)-.25 F F3(while) +2.887 E F0(or)2.887 E F3(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.898 E F0 .388 +(statement, part)4.848 F .778(of a command e)144 591.6 R -.15(xe)-.15 G +.778(cuted in a).15 F F3(&&)3.278 E F0(or)3.278 E F3(||)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.277 E F0 -3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 495.6 R +(wing the \214nal)-.25 F F3(&&)3.278 E F0(or)3.278 E F3(||)3.277 E F0 +3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 603.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 507.6 Q -(yed by the)-.15 E F1(err)2.5 E(exit)-.18 E F0(\()2.5 E F1A F0 2.5 +F3(!)3.78 E F0(.)A(These are the same conditions obe)144 615.6 Q +(yed by the)-.15 E F3(err)2.5 E(exit)-.18 E F0(\()2.5 E F3A F0 2.5 (\)o)C(ption.)-2.5 E 1.095 (Signals ignored upon entry to the shell cannot be trapped or reset.)144 -525.6 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 537.6 R .662 +633.6 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 645.6 R .662 (alues in a subshell or subshell en)-.25 F .662(vironment when one is) --.4 F 2.5(created. The)144 549.6 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 -566.4 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 578.4 S .174 -(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F2(name) +-.4 F 2.5(created. The)144 657.6 R(return status is f)2.5 E(alse if an) +-.1 E(y)-.15 E F4(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G +(lid; otherwise).25 E F3(trap)2.5 E F0(returns true.)2.5 E F3(type)108 +674.4 Q F0([)2.5 E F3(\255aftpP)A F0(])A F4(name)2.5 E F0([)2.5 E F4 +(name)A F0(...])2.5 E -.4(Wi)144 686.4 S .174 +(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F4(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 -F1144 590.4 Q F0 .842(option is used,)3.342 F F1(type)3.342 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.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F2 -(\214le)5.253 E F0(if)3.523 E F2(name)144.36 602.4 Q F0 .087 +F3144 698.4 Q F0 .842(option is used,)3.342 F F3(type)3.342 E F0 +.843(prints a string which is one of)3.343 F F4(alias)3.343 E F0(,).27 E +F4 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F4(function)3.343 E F0 +(,).24 E F4 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F4 +(\214le)5.253 E F0(if)3.523 E F4(name)144.36 710.4 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 F2 +(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F4 (name)2.946 E F0 .086(is not)2.766 F .118 -(found, then nothing is printed, and an e)144 614.4 R .118 +(found, then nothing is printed, and an e)144 722.4 R .118 (xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F -F12.619 E F0 .119(option is used,)2.619 F F1(type)2.619 E F0 .855 -(either returns the name of the disk \214le that w)144 626.4 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 .64(mand name, or nothing if)144 -638.4 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 F2(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F1 -3.141 E F0 .641(option forces a)3.141 F F3 -.666(PA)3.141 G(TH) --.189 E F0 .113(search for each)144 650.4 R F2(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 F2(\214le)2.613 E F0 5.113 -(.I).18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F1 -2.612 E F0(and)144 662.4 Q F13.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 F3 -.666(PA)3.231 G(TH)-.189 E F4(.)A F0 .731(If the)5.231 F F1 -144 674.4 Q F0 1.749(option is used,)4.249 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 F2(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 686.4 R F1 -3.244 E F0 .744(option is not also used.)3.244 F .744 -(The table of hashed)5.744 F 1.223(commands is not consulted when using) -144 698.4 R F13.723 E F0 6.223(.T)C(he)-6.223 E F13.723 E F0 -1.223(option suppresses shell function lookup, as)3.723 F .325(with the) -144 710.4 R F1(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F1(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 722.4 Q(GNU Bash 5.0)72 768 Q(2018 March 15) -144.29 E(77)193.45 E 0 Cg EP +F32.619 E F0 .119(option is used,)2.619 F F3(type)2.619 E F0 +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(77)194.555 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/F1 10/Times-Bold@0 -SF(ulimit)108 84 Q F0([)2.5 E F1(\255HSabcde\214klmnpqrstuvxPT)A F0([) -2.5 E/F2 10/Times-Italic@0 SF(limit)A F0(]])A(Pro)144 96 Q .244 -(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E .855 +(either returns the name of the disk \214le that w)144 84 R .855 +(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F/F1 10/Times-Italic@0 +SF(name)3.715 E F0 .855(were speci\214ed as a com-)3.535 F .64 +(mand name, or nothing if)144 96 R/F2 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/F3 10/Times-Bold@0 SF3.141 E F0 .641 +(option forces a)3.141 F/F4 9/Times-Bold@0 SF -.666(PA)3.141 G(TH)-.189 +E F0 .113(search for each)144 108 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 F2 .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 F32.612 E +F0(and)144 120 Q F33.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 F4 -.666(PA)3.231 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .731 +(If the)5.231 F F3144 132 Q F0 1.749(option is used,)4.249 F F3 +(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 144 R F3 +3.244 E F0 .744(option is not also used.)3.244 F .744 +(The table of hashed)5.744 F 1.223(commands is not consulted when using) +144 156 R F33.723 E F0 6.223(.T)C(he)-6.223 E F33.723 E F0 +1.223(option suppresses shell function lookup, as)3.723 F .325(with the) +144 168 R F3(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F3(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 180 Q F3(ulimit)108 196.8 Q F0([)2.5 E F3 +(\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144 +208.8 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 (he resources a)-2.744 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.943(that allo)144 108 R 3.443(ws)-.25 G .943(uch control.)-3.443 F(The) -5.943 E F13.443 E F0(and)3.443 E F13.444 E F0 .944 +.943(that allo)144 220.8 R 3.443(ws)-.25 G .943(uch control.)-3.443 F +(The)5.943 E F33.443 E F0(and)3.443 E F33.444 E F0 .944 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 120 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208(\ -hard limit cannot be increased by a non-root user once it is set; a sof\ -t limit may)2.709 F .425(be increased up to the v)144 132 R .425 -(alue of the hard limit.)-.25 F .426(If neither)5.425 F F12.926 E -F0(nor)2.926 E F12.926 E F0 .426 +144 232.8 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +(hard limit cannot be increased by a non-root user once it is set; a so\ +ft limit may)2.709 F .425(be increased up to the v)144 244.8 R .425 +(alue of the hard limit.)-.25 F .426(If neither)5.425 F F32.926 E +F0(nor)2.926 E F32.926 E F0 .426 (is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 -144 R .139(The v)5.139 F .139(alue of)-.25 F F2(limit)2.729 E F0 .139 +256.8 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 156 R(alues)-.25 E F1(hard)3.241 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) +.741(of the special v)144 268.8 R(alues)-.25 E F3(hard)3.241 E F0(,)A F3 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F3(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 168 R -.15(ve)-.25 G(ly).15 E -5.78(.I)-.65 G(f)-5.78 E F2(limit)3.37 E F0 .78 +(soft limit, and no limit, respecti)144 280.8 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 180 R F12.999 E F0 .499 -(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 +F .498(resource is printed, unless the)144 292.8 R F32.999 E F0 +.499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 (more than one resource is speci\214ed, the)2.999 F -(limit name and unit are printed before the v)144 192 Q 2.5(alue. Other) --.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F1144 204 -Q F0(All current limits are reported)180 204 Q F1144 216 Q F0 -(The maximum sock)180 216 Q(et b)-.1 E(uf)-.2 E(fer size)-.25 E F1 -144 228 Q F0(The maximum size of core \214les created)180 228 Q F1 -144 240 Q F0(The maximum size of a process')180 240 Q 2.5(sd)-.55 G -(ata se)-2.5 E(gment)-.15 E F1144 252 Q F0 -(The maximum scheduling priority \("nice"\))180 252 Q F1144 264 Q -F0(The maximum size of \214les written by the shell and its children)180 -264 Q F1144 276 Q F0(The maximum number of pending signals)180 276 -Q F1144 288 Q F0 -(The maximum number of kqueues that may be allocated)180 288 Q F1 -144 300 Q F0(The maximum size that may be lock)180 300 Q(ed into memory) --.1 E F1144 312 Q F0(The maximum resident set size \(man)180 312 Q -2.5(ys)-.15 G(ystems do not honor this limit\))-2.5 E F1144 324 Q -F0 .791(The maximum number of open \214le descriptors \(most systems do\ - not allo)180 324 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F -(be set\))180 336 Q F1144 348 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))180 348 Q F1 -144 360 Q F0(The maximum number of bytes in POSIX message queues) -180 360 Q F1144 372 Q F0 -(The maximum real-time scheduling priority)180 372 Q F1144 384 Q -F0(The maximum stack size)180 384 Q F1144 396 Q F0 -(The maximum amount of cpu time in seconds)180 396 Q F1144 408 Q -F0(The maximum number of processes a)180 408 Q -.25(va)-.2 G -(ilable to a single user).25 E F1144 420 Q F0 .47 -(The maximum amount of virtual memory a)180 420 R -.25(va)-.2 G .47 -(ilable to the shell and, on some systems, to).25 F(its children)180 432 -Q F1144 444 Q F0(The maximum number of \214le locks)180 444 Q F1 -144 456 Q F0(The maximum number of pseudoterminals)180 456 Q F1 -144 468 Q F0(The maximum number of threads)180 468 Q(If)144 484.8 -Q F2(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G .468(n, and the) -.15 F F12.968 E F0 .468(option is not used,)2.968 F F2(limit)2.968 -E F0 .468(is the ne)2.968 F 2.968(wv)-.25 G .468 +(limit name and unit are printed before the v)144 304.8 Q 2.5 +(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F3 +144 316.8 Q F0(All current limits are reported)180 316.8 Q F3 +144 328.8 Q F0(The maximum sock)180 328.8 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F3144 340.8 Q F0 +(The maximum size of core \214les created)180 340.8 Q F3144 352.8 +Q F0(The maximum size of a process')180 352.8 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F3144 364.8 Q F0 +(The maximum scheduling priority \("nice"\))180 364.8 Q F3144 +376.8 Q F0 +(The maximum size of \214les written by the shell and its children)180 +376.8 Q F3144 388.8 Q F0(The maximum number of pending signals)180 +388.8 Q F3144 400.8 Q F0 +(The maximum number of kqueues that may be allocated)180 400.8 Q F3 +144 412.8 Q F0(The maximum size that may be lock)180 412.8 Q +(ed into memory)-.1 E F3144 424.8 Q F0 +(The maximum resident set size \(man)180 424.8 Q 2.5(ys)-.15 G +(ystems do not honor this limit\))-2.5 E F3144 436.8 Q F0 .791(Th\ +e maximum number of open \214le descriptors \(most systems do not allo) +180 436.8 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F +(be set\))180 448.8 Q F3144 460.8 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 460.8 Q F3 +144 472.8 Q F0 +(The maximum number of bytes in POSIX message queues)180 472.8 Q F3 +144 484.8 Q F0(The maximum real-time scheduling priority)180 484.8 +Q F3144 496.8 Q F0(The maximum stack size)180 496.8 Q F3144 +508.8 Q F0(The maximum amount of cpu time in seconds)180 508.8 Q F3 +144 520.8 Q F0(The maximum number of processes a)180 520.8 Q -.25 +(va)-.2 G(ilable to a single user).25 E F3144 532.8 Q F0 .47 +(The maximum amount of virtual memory a)180 532.8 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 +544.8 Q F3144 556.8 Q F0(The maximum number of \214le locks)180 +556.8 Q F3144 568.8 Q F0(The maximum number of pseudoterminals)180 +568.8 Q F3144 580.8 Q F0(The maximum number of threads)180 580.8 Q +(If)144 597.6 Q F1(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G +.468(n, and the).15 F F32.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 .044 -(no option is gi)144 496.8 R -.15(ve)-.25 G .044(n, then).15 F F1 +(no option is gi)144 609.6 R -.15(ve)-.25 G .044(n, then).15 F F3 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 +(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F3 2.545 E F0 2.545(,w)C .045(hich is)-2.545 F 1.589(in seconds;)144 -508.8 R F14.089 E F0 4.089(,w)C 1.589 -(hich is in units of 512-byte blocks;)-4.089 F F14.089 E F0(,)A F1 -4.089 E F0(,)A F14.089 E F0(,)A F14.089 E F0(,)A F1 -4.089 E F0 4.089(,a)C(nd)-4.089 E F14.089 E F0 4.088(,w)C -1.588(hich are)-4.088 F 1.438(unscaled v)144 520.8 R 1.438 -(alues; and, when in Posix mode,)-.25 F F13.939 E F0(and)3.939 E -F13.939 E F0 3.939(,w)C 1.439(hich are in 512-byte increments.) --3.939 F(The)6.439 E .404(return status is 0 unless an in)144 532.8 R +621.6 R F34.089 E F0 4.089(,w)C 1.589 +(hich is in units of 512-byte blocks;)-4.089 F F34.089 E F0(,)A F3 +4.089 E F0(,)A F34.089 E F0(,)A F34.089 E F0(,)A F3 +4.089 E F0 4.089(,a)C(nd)-4.089 E F34.089 E F0 4.088(,w)C +1.588(hich are)-4.088 F 1.476(unscaled v)144 633.6 R 1.476 +(alues; and, when in posix mode,)-.25 F F33.976 E F0(and)3.976 E +F33.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 645.6 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 -544.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 561.6 Q F0([)2.5 E -F1A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A -.2(The user \214le-creation mask is set to)144 573.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 +657.6 S .5 -.25(ew l)-2.5 H(imit.).25 E F3(umask)108 674.4 Q F0([)2.5 E +F3A F0 2.5(][)C F3-2.5 E F0 2.5(][)C F1(mode)-2.5 E F0(])A +.2(The user \214le-creation mask is set to)144 686.4 R F1(mode)2.7 E F0 +5.2(.I).18 G(f)-5.2 E F1(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 585.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -597.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 -(alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 +pted by)144 698.4 R F1 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +710.4 Q F1(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 +(alue of the mask is printed.)-.25 F(The)5.382 E F32.882 E F0 .382 (option causes the mask to be)2.882 F .547 -(printed in symbolic form; the def)144 609.6 R .547 +(printed in symbolic form; the def)144 722.4 R .547 (ault output is an octal number)-.1 F 5.547(.I)-.55 G 3.047(ft)-5.547 G -(he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 -(mode)144.38 621.6 Q F0 .551 +(he)-3.047 E F33.047 E F0 .547(option is supplied, and)3.047 F +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(78)194.555 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/F1 10 +/Times-Italic@0 SF(mode)144.38 84 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 633.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 650.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 662.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) -4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E -F14.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155 -F(remo)144 674.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 691.2 Q F0<5bad>2.5 E F1 -(fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) -2.5 E -.15(Fo)144 703.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 +F .552(The return status is 0 if the)5.552 F(mode w)144 96 Q +(as successfully changed or if no)-.1 E F1(mode)2.5 E F0(ar)2.5 E +(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E/F2 10 +/Times-Bold@0 SF(unalias)108 112.8 Q F0<5bad>2.5 E F2(a)A F0 2.5(][)C F1 +(name)-2.5 E F0(...])2.5 E(Remo)144 124.8 Q 1.955 -.15(ve e)-.15 H(ach) +.15 E F1(name)4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 +F(If)6.655 E F24.155 E F0 1.655 +(is supplied, all alias de\214nitions are)4.155 F(remo)144 136.8 Q -.15 +(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E +(alue is true unless a supplied)-.25 E F1(name)2.86 E F0 +(is not a de\214ned alias.)2.68 E F2(unset)108 153.6 Q F0<5bad>2.5 E F2 +(fv)A F0 2.5(][)C-2.5 E F2(n)A F0 2.5(][)C F1(name)-2.5 E F0(...]) +2.5 E -.15(Fo)144 165.6 S 3.827(re).15 G(ach)-3.827 E F1(name)3.827 E F0 3.827(,r).18 G(emo)-3.827 E 1.627 -.15(ve t)-.15 H 1.327 (he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327 -(If the)6.327 F F13.828 E F0 1.328(option is gi)3.828 F -.15(ve) --.25 G 1.328(n, each).15 F F2(name)144.36 715.2 Q F0 1.551 +(If the)6.327 F F23.828 E F0 1.328(option is gi)3.828 F -.15(ve) +-.25 G 1.328(n, each).15 F F1(name)144.36 177.6 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 727.2 R F1 -4.641 E F0 2.141(is speci\214ed, each)4.641 F F2(name)5.001 E F0 +4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 189.6 R F2 +4.641 E F0 2.141(is speci\214ed, each)4.641 F F1(name)5.001 E F0 2.141(refers to a shell function, and the function de\214nition is)4.821 -F(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(78)193.45 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(remo)144 84 Q -.15 -(ve)-.15 G 2.538(d. If).15 F(the)2.537 E/F1 10/Times-Bold@0 SF -2.537 E F0 .037(option is supplied, and)2.537 F/F2 10/Times-Italic@0 SF -(name)2.537 E F0 .037(is a v)2.537 F .037(ariable with the)-.25 F F2 -(namer)2.537 E(ef)-.37 E F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0 -(will)2.537 E .492(be unset rather than the v)144 96 R .492 -(ariable it references.)-.25 F F15.492 E F0 .492(has no ef)2.992 F -.492(fect if the)-.25 F F12.992 E F0 .492(option is supplied.) -2.992 F .493(If no)5.493 F .221(options are supplied, each)144 108 R F2 -(name)2.721 E F0 .221(refers to a v)2.721 F .22 -(ariable; if there is no v)-.25 F .22(ariable by that name, an)-.25 F -2.72(yf)-.15 G(unc-)-2.72 E 1.188(tion with that name is unset.)144 120 -R 1.189(Each unset v)6.189 F 1.189(ariable or function is remo)-.25 F --.15(ve)-.15 G 3.689(df).15 G 1.189(rom the en)-3.689 F(vironment)-.4 E -3.206(passed to subsequent commands.)144 132 R 3.206(If an)8.206 F 5.706 +F(remo)144 201.6 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F2 +2.537 E F0 .037(option is supplied, and)2.537 F F1(name)2.537 E F0 .037 +(is a v)2.537 F .037(ariable with the)-.25 F F1(namer)2.537 E(ef)-.37 E +F0(attrib)2.537 E(ute,)-.2 E F1(name)2.537 E F0(will)2.537 E .492 +(be unset rather than the v)144 213.6 R .492(ariable it references.)-.25 +F F25.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F2 +2.992 E F0 .492(option is supplied.)2.992 F .493(If no)5.493 F +.221(options are supplied, each)144 225.6 R F1(name)2.721 E F0 .221 +(refers to a v)2.721 F .22(ariable; if there is no v)-.25 F .22 +(ariable by that name, an)-.25 F 2.72(yf)-.15 G(unc-)-2.72 E 1.188 +(tion with that name is unset.)144 237.6 R 1.189(Each unset v)6.189 F +1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.689(df).15 G +1.189(rom the en)-3.689 F(vironment)-.4 E 3.206 +(passed to subsequent commands.)144 249.6 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 144 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) +F4(,)A F3(LINENO)144 261.6 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) 4.347 E(AME)-.18 E F4(,)A F3(GR)4.347 E(OUPS)-.27 E F4(,)A F0(or)4.348 E F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348 -F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144 156 -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 172.8 Q -F0([)2.5 E F1(\255fn)A F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144 -184.8 S .659(it for each speci\214ed child process and return its termi\ -nation status.).8 F(Each)5.659 E F2(id)3.169 E F0 .658(may be a process) -3.928 F .008(ID or a job speci\214cation; if a job spec is gi)144 196.8 +F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144 +273.6 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 F1(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F2(wait)108 290.4 Q +F0([)2.5 E F2(\255fn)A F0 2.5(][)C F1(id ...)-2.5 E F0(])A -.8(Wa)144 +302.4 S .659(it for each speci\214ed child process and return its termi\ +nation status.).8 F(Each)5.659 E F1(id)3.169 E F0 .658(may be a process) +3.928 F .008(ID or a job speci\214cation; if a job spec is gi)144 314.4 R -.15(ve)-.25 G .009(n, all processes in that job').15 F 2.509(sp)-.55 G .009(ipeline are w)-2.509 F .009(aited for)-.1 F 5.009(.I)-.55 G(f) --5.009 E F2(id)144.01 208.8 Q F0 .522(is not gi)3.792 F -.15(ve)-.25 G +-5.009 E F1(id)144.01 326.4 Q F0 .522(is not gi)3.792 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.521 E(the)144 220.8 Q F1 -3.056 E F0 .556(option is supplied,)3.056 F F1(wait)3.057 E F0 -.1 +(nd the return status is zero.)-3.021 F(If)5.521 E(the)144 338.4 Q F2 +3.056 E F0 .556(option is supplied,)3.056 F F2(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 .557 -(If the)5.557 F F13.057 E F0 .587 -(option is supplied, and job control is enabled,)144 232.8 R F1(wait) -3.086 E F0(forces)3.086 E F2(id)3.086 E F0 .586 +(If the)5.557 F F23.057 E F0 .587 +(option is supplied, and job control is enabled,)144 350.4 R F2(wait) +3.086 E F0(forces)3.086 E F1(id)3.086 E F0 .586 (to terminate before returning its sta-)3.086 F .755 -(tus, instead of returning when it changes status.)144 244.8 R(If)5.756 -E F2(id)3.266 E F0 .756(speci\214es a non-e)4.026 F .756 -(xistent process or job, the)-.15 F .365(return status is 127.)144 256.8 +(tus, instead of returning when it changes status.)144 362.4 R(If)5.756 +E F1(id)3.266 E F0 .756(speci\214es a non-e)4.026 F .756 +(xistent process or job, the)-.15 F .365(return status is 127.)144 374.4 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 -268.8 Q(.)-.55 E/F5 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 285.6 Q F0 -(If)108 297.6 Q F1(bash)4.396 E F0 1.896(is started with the name)4.396 -F F1(rbash)4.397 E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F1 +386.4 Q(.)-.55 E/F5 10.95/Times-Bold@0 SF(RESTRICTED SHELL)72 403.2 Q F0 +(If)108 415.2 Q F2(bash)4.396 E F0 1.896(is started with the name)4.396 +F F2(rbash)4.397 E F0 4.397(,o)C 4.397(rt)-4.397 G(he)-4.397 E F2 4.397 E F0 1.897(option is supplied at in)4.397 F -.2(vo)-.4 G 1.897 -(cation, the shell becomes).2 F 3.446(restricted. A)108 309.6 R .945 +(cation, the shell becomes).2 F 3.446(restricted. A)108 427.2 R .945 (restricted shell is used to set up an en)3.446 F .945 (vironment more controlled than the standard shell.)-.4 F(It)5.945 E -(beha)108 321.6 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F1 +(beha)108 439.2 Q -.15(ve)-.2 G 2.5(si).15 G(dentically to)-2.5 E F2 (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 338.4 Q -(changing directories with)144 338.4 Q F1(cd)2.5 E F0<83>108 355.2 Q -(setting or unsetting the v)144 355.2 Q(alues of)-.25 E F3(SHELL)2.5 E +(wing are disallo)-.25 E(wed or not performed:)-.25 E<83>108 456 Q +(changing directories with)144 456 Q F2(cd)2.5 E F0<83>108 472.8 Q +(setting or unsetting the v)144 472.8 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 372 Q -(specifying command names containing)144 372 Q F1(/)2.5 E F0<83>108 -388.8 Q(specifying a \214lename containing a)144 388.8 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 405.6 Q .449 -(specifying a \214lename containing a slash as an ar)144 405.6 R .449 -(gument to the)-.18 F F12.95 E F0 .45(option to the)2.95 F F1 -(hash)2.95 E F0 -.2(bu)2.95 G .45(iltin com-).2 F(mand)144 417.6 Q<83> -108 434.4 Q(importing function de\214nitions from the shell en)144 434.4 -Q(vironment at startup)-.4 E<83>108 451.2 Q(parsing the v)144 451.2 Q +2.25 E F3 -.27(BA)2.5 G(SH_ENV).27 E F0<83>108 489.6 Q +(specifying command names containing)144 489.6 Q F2(/)2.5 E F0<83>108 +506.4 Q(specifying a \214lename containing a)144 506.4 Q F2(/)2.5 E F0 +(as an ar)2.5 E(gument to the)-.18 E F2(.)2.5 E F0 -.2(bu)5 G +(iltin command).2 E<83>108 523.2 Q .449 +(specifying a \214lename containing a slash as an ar)144 523.2 R .449 +(gument to the)-.18 F F22.95 E F0 .45(option to the)2.95 F F2 +(hash)2.95 E F0 -.2(bu)2.95 G .45(iltin com-).2 F(mand)144 535.2 Q<83> +108 552 Q(importing function de\214nitions from the shell en)144 552 Q +(vironment at startup)-.4 E<83>108 568.8 Q(parsing the v)144 568.8 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 468 Q(redirecting output using the >\ -, >|, <>, >&, &>, and >> redirection operators)144 468 Q<83>108 484.8 Q -(using the)144 484.8 Q F1(exec)2.5 E F0 -.2(bu)2.5 G +(vironment at startup)-.4 E<83>108 585.6 Q(redirecting output using the\ + >, >|, <>, >&, &>, and >> redirection operators)144 585.6 Q<83>108 +602.4 Q(using the)144 602.4 Q F2(exec)2.5 E F0 -.2(bu)2.5 G (iltin command to replace the shell with another command).2 E<83>108 -501.6 Q(adding or deleting b)144 501.6 Q(uiltin commands with the)-.2 E -F12.5 E F0(and)2.5 E F12.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 518.4 Q -(using the)144 518.4 Q F1(enable)2.5 E F0 -.2(bu)2.5 G +619.2 Q(adding or deleting b)144 619.2 Q(uiltin commands with the)-.2 E +F22.5 E F0(and)2.5 E F22.5 E F0(options to the)2.5 E F2 +(enable)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 636 Q(using the) +144 636 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 -535.2 Q(specifying the)144 535.2 Q F12.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 552 Q -(turning of)144 552 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 568.8 Q 2.5(ys)-.15 G +652.8 Q(specifying the)144 652.8 Q F22.5 E F0(option to the)2.5 E +F2(command)2.5 E F0 -.2(bu)2.5 G(iltin command).2 E<83>108 669.6 Q +(turning of)144 669.6 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 686.4 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 585.6 R -.15 +(When a command that is found to be a shell script is e)108 703.2 R -.15 (xe)-.15 G 1.566(cuted \(see).15 F F3 1.566(COMMAND EXECUTION)4.066 F F0 -(abo)3.816 E -.15(ve)-.15 G(\),).15 E F1(rbash)108 597.6 Q F0(turns of) +(abo)3.816 E -.15(ve)-.15 G(\),).15 E F2(rbash)108 715.2 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 F5(SEE ALSO)72 -614.4 Q F2(Bash Refer)108 626.4 Q(ence Manual)-.37 E F0 2.5(,B)C(rian F) --2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2(The Gnu Readline Libr)108 -638.4 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E(y) --.15 E F2(The Gnu History Libr)108 650.4 Q(ary)-.15 E F0 2.5(,B)C -(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2 -.8(Po)108 662.4 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 674.4 Q(g/onlinepubs/9699919799/)-.18 E -(http://tiswww)108 686.4 Q -(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F2(sh) -108 698.4 Q F0(\(1\),)A F2(ksh)2.5 E F0(\(1\),)A F2(csh)2.5 E F0(\(1\))A -(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E(79)193.45 E 0 Cg EP +E(wned to e)-.15 E -.15(xe)-.15 G(cute the script.).15 E(GNU Bash 5.0)72 +768 Q(2018 August 7)145.395 E(79)194.555 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/F1 10 -/Times-Italic@0 SF(emacs)108 84 Q F0(\(1\),)A F1(vi)2.5 E F0(\(1\))A F1 --.37(re)108 96 S(adline).37 E F0(\(3\))A/F2 10.95/Times-Bold@0 SF(FILES) -72 112.8 Q F1(/bin/bash)109.666 124.8 Q F0(The)144 136.8 Q/F3 10 -/Times-Bold@0 SF(bash)2.5 E F0 -.15(exe)2.5 G(cutable).15 E F1(/etc/pr) -109.666 148.8 Q(o\214le)-.45 E F0 -(The systemwide initialization \214le, e)144 160.8 Q -.15(xe)-.15 G -(cuted for login shells).15 E F1(~/.bash_pr)109.666 172.8 Q(o\214le)-.45 -E F0(The personal initialization \214le, e)144 184.8 Q -.15(xe)-.15 G -(cuted for login shells).15 E F1(~/.bashr)109.666 196.8 Q(c)-.37 E F0 -(The indi)144 208.8 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G -(-shell startup \214le).15 E F1(~/.bash_lo)109.666 220.8 Q(gout)-.1 E F0 -(The indi)144 232.8 Q(vidual login shell cleanup \214le, e)-.25 E -.15 -(xe)-.15 G(cuted when a login shell e).15 E(xits)-.15 E F1(~/.inputr) -109.666 244.8 Q(c)-.37 E F0(Indi)144 256.8 Q(vidual)-.25 E F1 -.37(re) -2.5 G(adline).37 E F0(initialization \214le)2.5 E F2 -.548(AU)72 273.6 S -(THORS).548 E F0(Brian F)108 285.6 Q(ox, Free Softw)-.15 E(are F)-.1 E -(oundation)-.15 E(bfox@gnu.or)108 297.6 Q(g)-.18 E(Chet Rame)108 314.4 Q +(Commands Manual)2.5 E -.35(BA)139.64 G(SH\(1\)).35 E/F1 10.95 +/Times-Bold@0 SF(SEE ALSO)72 84 Q/F2 10/Times-Italic@0 SF(Bash Refer)108 +96 Q(ence Manual)-.37 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 +E(y)-.15 E F2(The Gnu Readline Libr)108 108 Q(ary)-.15 E F0 2.5(,B)C +(rian F)-2.5 E(ox and Chet Rame)-.15 E(y)-.15 E F2(The Gnu History Libr) +108 120 Q(ary)-.15 E F0 2.5(,B)C(rian F)-2.5 E(ox and Chet Rame)-.15 E +(y)-.15 E F2 -.8(Po)108 132 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 144 Q +(g/onlinepubs/9699919799/)-.18 E(http://tiswww)108 156 Q +(.case.edu/~chet/bash/POSIX -- a description of posix mode)-.65 E F2(sh) +108 168 Q F0(\(1\),)A F2(ksh)2.5 E F0(\(1\),)A F2(csh)2.5 E F0(\(1\))A +F2(emacs)108 180 Q F0(\(1\),)A F2(vi)2.5 E F0(\(1\))A F2 -.37(re)108 192 +S(adline).37 E F0(\(3\))A F1(FILES)72 208.8 Q F2(/bin/bash)109.666 220.8 +Q F0(The)144 232.8 Q/F3 10/Times-Bold@0 SF(bash)2.5 E F0 -.15(exe)2.5 G +(cutable).15 E F2(/etc/pr)109.666 244.8 Q(o\214le)-.45 E F0 +(The systemwide initialization \214le, e)144 256.8 Q -.15(xe)-.15 G +(cuted for login shells).15 E F2(~/.bash_pr)109.666 268.8 Q(o\214le)-.45 +E F0(The personal initialization \214le, e)144 280.8 Q -.15(xe)-.15 G +(cuted for login shells).15 E F2(~/.bashr)109.666 292.8 Q(c)-.37 E F0 +(The indi)144 304.8 Q(vidual per)-.25 E(-interacti)-.2 E -.15(ve)-.25 G +(-shell startup \214le).15 E F2(~/.bash_lo)109.666 316.8 Q(gout)-.1 E F0 +(The indi)144 328.8 Q(vidual login shell cleanup \214le, e)-.25 E -.15 +(xe)-.15 G(cuted when a login shell e).15 E(xits)-.15 E F2(~/.inputr) +109.666 340.8 Q(c)-.37 E F0(Indi)144 352.8 Q(vidual)-.25 E F2 -.37(re) +2.5 G(adline).37 E F0(initialization \214le)2.5 E F1 -.548(AU)72 369.6 S +(THORS).548 E F0(Brian F)108 381.6 Q(ox, Free Softw)-.15 E(are F)-.1 E +(oundation)-.15 E(bfox@gnu.or)108 393.6 Q(g)-.18 E(Chet Rame)108 410.4 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 326.4 Q(y@case.edu)-.15 -E F2 -.11(BU)72 343.2 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .567 -(If you \214nd a b)108 355.2 R .568(ug in)-.2 F F3(bash,)3.068 E F0 .568 +-2.5 E -.15(ve)-.25 G(rsity).15 E(chet.rame)108 422.4 Q(y@case.edu)-.15 +E F1 -.11(BU)72 439.2 S 2.738(GR).11 G(EPOR)-2.738 E(TS)-.438 E F0 .567 +(If you \214nd a b)108 451.2 R .568(ug in)-.2 F F3(bash,)3.068 E F0 .568 (you should report it.)3.068 F .568(But \214rst, you should mak)5.568 F 3.068(es)-.1 G .568(ure that it really is a b)-3.068 F .568(ug, and)-.2 -F 5.626(that it appears in the latest v)108 367.2 R 5.625(ersion of)-.15 +F 5.626(that it appears in the latest v)108 463.2 R 5.625(ersion of)-.15 F F3(bash)8.125 E F0 10.625(.T)C 5.625(he latest v)-10.625 F 5.625 (ersion is al)-.15 F -.1(wa)-.1 G 5.625(ys a).1 F -.25(va)-.2 G 5.625 -(ilable from).25 F F1(ftp://ftp.gnu.or)108 379.2 Q(g/pub/gnu/bash/)-.37 -E F0(.)A .41(Once you ha)108 396 R .71 -.15(ve d)-.2 H .41 +(ilable from).25 F F2(ftp://ftp.gnu.or)108 475.2 Q(g/pub/gnu/bash/)-.37 +E F0(.)A .41(Once you ha)108 492 R .71 -.15(ve d)-.2 H .41 (etermined that a b).15 F .41(ug actually e)-.2 F .411(xists, use the) --.15 F F1(bashb)3.181 E(ug)-.2 E F0 .411(command to submit a b)3.131 F -.411(ug report.)-.2 F(If)5.411 E .595(you ha)108 408 R .895 -.15 +-.15 F F2(bashb)3.181 E(ug)-.2 E F0 .411(command to submit a b)3.131 F +.411(ug report.)-.2 F(If)5.411 E .595(you ha)108 504 R .895 -.15 (ve a \214)-.2 H .595(x, you are encouraged to mail that as well!).15 F .594(Suggestions and `philosophical' b)5.595 F .594(ug reports may)-.2 F -(be mailed to)108 420 Q F1 -.2(bu)2.5 G(g-bash@gnu.or).2 E(g)-.37 E F0 +(be mailed to)108 516 Q F2 -.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 F3(gnu.bash.b)2.5 E(ug) --.2 E F0(.)A(ALL b)108 436.8 Q(ug reports should include:)-.2 E(The v) -108 453.6 Q(ersion number of)-.15 E F3(bash)2.5 E F0(The hardw)108 465.6 -Q(are and operating system)-.1 E(The compiler used to compile)108 477.6 -Q 2.5(Ad)108 489.6 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 -E 2.5(As)108 501.6 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 -G(rcises the b).15 E(ug)-.2 E F1(bashb)108.27 518.4 Q(ug)-.2 E F0 +-.2 E F0(.)A(ALL b)108 532.8 Q(ug reports should include:)-.2 E(The v) +108 549.6 Q(ersion number of)-.15 E F3(bash)2.5 E F0(The hardw)108 561.6 +Q(are and operating system)-.1 E(The compiler used to compile)108 573.6 +Q 2.5(Ad)108 585.6 S(escription of the b)-2.5 E(ug beha)-.2 E(viour)-.2 +E 2.5(As)108 597.6 S(hort script or `recipe' which e)-2.5 E -.15(xe)-.15 +G(rcises the b).15 E(ug)-.2 E F2(bashb)108.27 614.4 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 -535.2 Q(ug reports concerning this manual page should be directed to)-.2 -E F1 -.15(ch)2.5 G(et.r).15 E(ame)-.15 E(y@case)-.3 E(.edu)-.15 E F0(.) -.25 E F2 -.11(BU)72 552 S(GS).11 E F0(It')108 564 Q 2.5(st)-.55 G +631.2 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 F1 -.11(BU)72 648 S(GS).11 E F0(It')108 660 Q 2.5(st)-.55 G (oo big and too slo)-2.5 E -.65(w.)-.25 G 1.868 -(There are some subtle dif)108 580.8 R 1.868(ferences between)-.25 F F3 +(There are some subtle dif)108 676.8 R 1.868(ferences between)-.25 F F3 (bash)4.369 E F0 1.869(and traditional v)4.369 F 1.869(ersions of)-.15 F F3(sh)4.369 E F0 4.369(,m)C 1.869(ostly because of the)-4.369 F/F4 9 -/Times-Bold@0 SF(POSIX)108 592.8 Q F0(speci\214cation.)2.25 E -(Aliases are confusing in some uses.)108 609.6 Q(Shell b)108 626.4 Q +/Times-Bold@0 SF(POSIX)108 688.8 Q F0(speci\214cation.)2.25 E +(Aliases are confusing in some uses.)108 705.6 Q(Shell b)108 722.4 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 643.2 R .389 -(process suspension is attempted.)108 655.2 R .389 -(When a process is stopped, the shell immediately e)5.389 F -.15(xe)-.15 -G .39(cutes the ne).15 F .39(xt com-)-.15 F .193(mand in the sequence.) -108 667.2 R .192(It suf)5.193 F .192(\214ces to place the sequence of c\ -ommands between parentheses to force it into a)-.25 F -(subshell, which may be stopped as a unit.)108 679.2 Q(Array v)108 696 Q -(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E -(There may be only one acti)108 712.8 Q .3 -.15(ve c)-.25 H -(oprocess at a time.).15 E(GNU Bash 5.0)72 768 Q(2018 March 15)144.29 E -(80)193.45 E 0 Cg EP +(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E(80)194.555 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 1.315(Compound co\ +mmands and command sequences of the form `a ; b ; c' are not handled gr\ +acefully when)108 84 R .389(process suspension is attempted.)108 96 R +.389(When a process is stopped, the shell immediately e)5.389 F -.15(xe) +-.15 G .39(cutes the ne).15 F .39(xt com-)-.15 F .193 +(mand in the sequence.)108 108 R .192(It suf)5.193 F .192(\214ces to pl\ +ace the sequence of commands between parentheses to force it into a)-.25 +F(subshell, which may be stopped as a unit.)108 120 Q(Array v)108 136.8 +Q(ariables may not \(yet\) be e)-.25 E(xported.)-.15 E +(There may be only one acti)108 153.6 Q .3 -.15(ve c)-.25 H +(oprocess at a time.).15 E(GNU Bash 5.0)72 768 Q(2018 August 7)145.395 E +(81)194.555 E 0 Cg EP %%Trailer end %%EOF diff --git a/doc/bashref.dvi b/doc/bashref.dvi index f79cc8ed553fb622081d28a5b54a28aa92ee0617..a270d0826976253eab6db8ad387f582652255536 100644 GIT binary patch delta 21802 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 H?BD+ZJq4zM delta 18420 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

INgA5?p?|$iHV+yP#m`mg%Ib_OHcY~ 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 Meg7f;QT_LS08{h0`Tzg` diff --git a/doc/bashref.html b/doc/bashref.html index f494f344e..13d9294c1 100644 --- a/doc/bashref.html +++ b/doc/bashref.html @@ -1,9 +1,9 @@ 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≶9S%9pa_Zjd1Ve6ZNJBgZh<6mssww-Kj+t$YRFSc#lwryJ*n;R#)$=&aL zzgzd8TQxN`RZpL%yQfa~^f^=06U0AIXQRK(BTt`?z$Xq%C{2OKZ6`IQ*$e>x=WO4T zao7r$JLOo{H!CXemsb;kS6Yv>RN!EZfkZ>70f}dv>u8H?W)t;i)H$S@^R|`C3YL{s z>)(~u$Rvy2($pNbJfzjK_Pe#!Zw}*Z*omIs0dnCj=(b|PocoDt__a_d9Os1a7sRms zG>}Z?8#c8A%#P*JS>RgBLR!30xs~eo(C5=W(Z+X~lx4U+0Gb$tPM!C|pR zyGlZMD72BH%+0yEkWE#ej*`vH0QesPws7cc7^9p62hcamS2R-&Rco}y(sNA3YhXf( zH}EG}3e_pVQmZY4sui%7%qS1uVG)O_M;`1K8EdFPY4#POy*|GyeQI;$Gj8Xob4uqZ zI1bKVEY7qmdbtnHLH=ER9HKZB&CHw?Z0^LJ8<|X}csM1i=M5%Kf+&_p?JaklOS*D@ zz8q2zX;07-RA`B5s(BXfw_$3WW1*hQzMgM9!uVN$NZrREFB>g?RP zQgyq>9berJyA3y-Q|n*4FIJUts4uOw8H2Vb(qoZ3kh~;Lk!)z>bF!Tgfk#DsnLbExN84Be-6Xd;AL>c^>e&$MlG`XOT`N zW*We_0hjJXw!@&{yZxC7v?0{6JtKh#jfqS?B-CYBQDmiGD_3PN^WX<}Y?AJcRRs<( zY-(*}gI(FbuB%ZJYN^H~M74sY3!{-N-xwApRts5$Vx%ZgmM7#2%mL^_q*qTLW9(87z|e2CZFzA7 z2TM#nbiH}41~iBvRJHA63NIf?^{IJ?W{w>b@wbejM87LN|MEU!)#4-!?s?equ|edP zO(L-r5d0wHpA)OHNCyxozv-b?{En3(UP1qpM33w+hkswnzVL&W?L|0ti7N`Y(1DYe zEIiJyu>|i%_pWVnBjoR$hkF`S>g0VuNdGiNcq#>8AfuHzYP=bS1<5kJeHk4m5fS85 zxOYGDiM+3eb7l#SMD}X(iulAhab6tk70iPBad1bZ_I$$ZFaZ~z<|J>JE-_{nw zr)Cq6RMDlVdD`U|!o6^^X@3DMLt5G)|E$_Di0!ns{CGOrDHc&YYpNU{>&TCJ#a-b_ zudkHGXf$RtEDVhVwOA(3cMXLz{h+~RP*yIApJ>_4C3f=ON?x?`NW;4jtmz7 z;R~!5V9^FAwU(l6qrr6@uzpijU$|e&H7n9evt)~IydNWxVPsZ0&j7L+%^=Lk~)8dO;5Bd)SSp8(}&X{JK+y{qeQ7T zOYFISI(f^PfhE9R^evj$xSJAS_3!8oE7V{80r7LHs#9V0VZGNXq|R?IneSD4VRJcq z;q>T23OqHj3*z^Ln0zR3uJ^1laOx1!0{#m}RNWVvN|T8hhSznV7b`=x#E>dti7Fz2 z*GR)1XA{#q^qOah<3|h{<#Du1Ink9qq{d4~odkK37|blWzRdD4lpT{eX%4Q%VNb^p z;#$#tx>&SCI28eRqm`iYYFI$Dqqm`3iFdS1q~waMBJy$s1??{I{v^shj|vxyVSD)bJ|B9TI{gx5y{y49!&QP`s3Z&f6kN-$d~! zw4r%H@xz-;!;UxEV~Du5FC$36Mpz_u6Ax00Z4giodCs)|kR7vw>8k`3%wbU53~y-qCv;ilnws2A$|CZqmMD9x44%dmg)zp&gMh1@1@BsF_7Hi zN~0ciQA@rDOa5;2z9jswm{Ux!l=9=;6YN{5L{-md{018P`u5}ddNxr=S(*4BFv8zY zQCd*1GcFB$j7&z8`gfa?P<|OiEH0T^_V{8x^@~1HxcoHuh&(9Gr|G)&s71uQHz$(# z9({|8XZAGLmpUTxedT1e-QaP4A^ergQ%^fzE0lZKG6X`2>*<7YfcfUNWJz8AJM8B-QThAzd^+eG z6gn6SXF5p`C|Wx08`KSGc{=tx6bW!UevV=glC2>LIi*y;()O|J91(FRX0X+WKasHK zkEi{XV3-CirF?)7foLiVi3-wU+Gt;8e7;FXiUp1$Kuo@xRPJodz4q_C#*#nxD2ln3OQ>Kuv^vJDK5I(zI<5n zS*W{)aXS%I=Pt{7QF|H@ssK7pb(-d*x&19XkJRt}!R<+2T{>Ax_o{$T@D~YH^}hD8 zw0()y$=V6LYIc~>?ux?cWPM3RL1!OwN;SCY5Se}@Q1F|qI zY}&D^^dG*e4_oG$F78y|M=7^KQCGbxD#s&2NIN&-&6mHhW}>s2zMh2F@`MgMKXjJ$ugk8nIS=*4;-o`T?HE5jKC>Is z)pqgE$h1InH+q!kpG&|{_?+w&Rds6VWhDfj1h)d^%UH-YDE23am~#7_=0X4cK~E?MXC=YWsVibV;$^+Mh8`)?0Lv=Xn5|E$o+6f4IScQQV4l;i*$L20tL)E@$zy zf6S`3)?PeL!P}$fdeMBJ{<2JUm=z6-e}b;-btr&Iv7R2gQP7w)Joww7iePJQp51Pm zO6Jlk%01>=9~#)`fZ2Vi^^CDtp6)7L8DdRx=USEt#r6BQz32H2G=CGGONnZ%$R#=& zyXT!Bkp)Tu4C!xW%*Glm-cHtNJ+?Y{2>8Jg1JhAa2g!YwTpOb z$jZkA&%Eub+hXnPnIB86sE`A2PWQ^y7V zn&wR!{VCei6IyP9b(U%PXy}eC<1GcCVBBm2nPHkFYm+LE6B9hKtBwt`Hr2u8>40w7rSmNWCI|@vS#pi{3;}1lo2XyEPVu8mo3WMN03M zaH@B}U=d>t32EAy6pK2c*JmpB3H(EN`Le8=T^%_L<>)9HQ$#Cw%KH0|tsQE&Z81yr zVG+-T_TAM7O6ze8g`HdV{|w`2Of41U-tGB+w*!IV0%U43;DL`e5?#OPR@^>+R|fR_ zTJ=?I(c=07_PT|l+d;S^mgG=&K5mIcBBVXLFX+#mnX2F7P|U9Q1wK>ooj{oubq*@c zDm4Q{Tk{1?I2|Or^}P_$4}=gwOL=mAB=OKCIg3LZx7}MiZq`n$*{1KXreD-5t3}uk z>|cRs2Q?t+R@=rG1otwS0n=?=!K07y-kji5IdI=$Zd@`RGRf@FqQ%t(ga}N4JJgA`EMK112}sk;}y|D;bJJ=1Tk%E zmkm)iPu7Y7SCcZGm4elWog_HlXZB*v=(de#^X)~QgD-Hl{0cKt*zK)keE~q& z0<*QCEma(cY+Me)ceXM==76Knf}ICm_zN) z?@_^LqA3$jyrh~kGJU1 zs#H9!<@adkY*$P2lwJTvEz8WXmlS>8Px!Gu<($E!1~nG~x}nIZuv_y&aN61W^MJSj zEWQFli#3x3nu^R8c_{3@^0r>~0&{BC?(-J-R5_e_GicK%w{JGf`%WNU;|92`Yvp^ZUWG8{27RYRv(tZUSBTKcgw2eh3uWY;D9!9);f+3q~hK@=sb3N8xhQ+Z;#@^qK*G zj@nqG1|#8YW;YMcxI1onUM0LHk@>)BGRuRkq%n7K@7LKKtAt8(DUIp+qTmvBq(9qlJu!-3 zYaT-gKKHYz|KRxI zImh@olUmTzrF3+hmf;5Kbn;H@Uq2oe0IBlw9SyR zoK+_$KuSfuLcTAdnGW{>m+q*ML^}WY(e&Wh7XJe%D~bo6uQU{PC95w4(=D(Q9{Iw| zx&U}|Mg!+`f_M~p1zXy!E}o9V=S*Spd9KRavsTbt_g&MKS+brK{+*sl=uH|+X@Hh?9X1q7L{V&5~3bz*ltC?NRX!`M{W zD9jb8p$5*u2~W)i3*K?*&D9|o2TD8dr)^in0^%TiuKT~KBF+Rv1+*05*iKZy4%7ap z3F|=cCGhXdtWcjmH_~C7L1x8nCmqwL#kTtV3ge*v^N6(S&GpuVzFU=THs(P=M0}=F zS*FThdhg#e4L><12Yn)2KPGeV7Y$Gx4U$|nRPqFvK$jvQ zR<~gwBOth?j~R_Ur&XR`jJB^9%UN9l>D*q|zTqw)zq8Hmw7t7n;~f55ubf`mf@&F( zKzK_n=;NBX;WQda4%&y4*Gv{MgUV#)uIUzbBf++)`{gl(9oGXr9FAip41)k_;G*SBFTl(CDn++OdUWD86 zB32cpqV>^h^pK6{6ED;AG+0OkCNussRF?f2q?|+SVRQ!Yq#BBAdeE+0Q0U9tEB-U% z%N1nSAhwyh2h1Z^oCI)?1-{$A42L>yD}w;ogCoU)v9;smqEZ7?e1n>6bp`!rfeOl& z&O!izmOc#tT!G2dw|77TKHU-f9$*~xvbkFK-|z>1S;~FVLj0i;3i>W|w-hiKOvtjq+MG^;H?EFuA|ai9 zL{$ZjQv%oPOi+G<^;9n1U^};Rl13fv1#EUdZf?GxvB=h9-*^?B)?cp4PE!&I|VjD2|;m~>9VE%+G(?99W_(=Z7u85}Y) zHSjM9sMUy-Bo)H+<;Lou!yx~$|3hY6azi1Q(+BMK^>cdp_?yur9610LPm4$T{ov}) zqH~HnS&sMYR2KJ9_6nMKZW<7Pi4n@@_aXJl;tj&l5{!(i5Vj6&2|ZPGMM>E}8p!Cp zAYVtF>G!@~_rB@2CtUB)5%f(M3h!C5irm;Q;X+@e4{zXDyq{R8jdaW6j&(EUrn$dx zv;$n{JW`nA)2pby!@;CjcnkOa_L*ro`0{ir(P+g`Mi->&s9*9%_^V%~uUli?`-7># z!BRJes%B;P84gQHdx5pKE}Z$Ei=AYjQVyGds@e;I2(#h~^Tb0Ge9AX55MSJZG?YVB z!o&$cppxKauD%8$|ygqG}prf|xq`#~TXj9`cjv<~XFs2Wl)GzoIRpeu=cifIv^ zL_!>*$dB%EUlo!P8?MitUxItR3s@b&;26sjfGy37qQM~~JK!AvCDzn2Jy5-Om2Qg! z1iZK&mpJ{#LUyI720s+c=cfq~y5|`5DQyGyk2J{PufU^$1AoU{3_SsE)TaAa8Bkz- zwr4=;_m0YfN+fqo-mayq383J7}Qa}SgfE{@ZtKwYY1xZaWjG;o4ClVvA4Jh+^H=CG~ipphLFyqH8`cvby%Sa&UU zUU`Vo=y`4AeCOPrAast_LE4uQB?Wk%XDCdsw_0-U|E&*qh=I_M3neXp=?)_rP)b{x z2h0D#DtKB5Q?hUX5>ZSzL{K&w{85LOvA%5c-h4+}7w0y0SMJZ>x`%2S!-O7#*r(N< zbvf?n?+uz7>!#dSJLYW#?P17%{0e2nwZ>l>q29CZXf}4TGtivDK))H3{TrnUNRyDL zo~ast=)K7n<<3s_ z&xzyGEH19!Vs_g>V|>|4?5bzL)o>N}L$FmVjHwV5jrE=3`u4&WpboZ6|9_-Y7KE$kIJrdio9SW6raTn&2l;Cz$-7k{654fL& zG>f;g9%n72j^-a;!C z*VaJGT?RT9FmXEdn+vK0PInC~Psnp=FZXk^B8yLP6Mzm-f@L%Yyq$l<0vafg7@{@@)}+o9E* zTWuROi`(Gw*t(2sr8x50;sQ>KR}0gGeMyPgayfR%P$I>*Hu{3$A6hGVazN5K|FBVU z&+`Vv;!X`-D)kGXdEMdnN@mAdA9vbGV%Ce?U0B)7%3U81kaosl!22l$aHQT+r+|{- z|DN#&f0E?V=aeny1G|cpmBCFnj;0X8NQI~v*A^z9Z~mG9qEIWH83R!jdB@|(F#o(; zEG#sH5(fUN58%;TseSGP!bl=59aSf0qMQ%2P+5Pl2_;`sf2lVVXYPo z?8QCg9_vhRmv&Jau<30C;GAwJFTGg_3nt|qE#nUo_0piDhC%0#!x$7;LjnW27o(DQ zd=lgbCgxk+MK-J7gMd9LuRplDh9kmP=B?6CmOzgQ$@6EPcuwLXuCbG2#K3z%2{R~Y z)LJ;g$0%gmC~ToQBl&q1qIu7q&;ZJe4C2o74k33&2G~Cg(8$wyrfjR3-ShB^)CUhK ztYb&P3{;#V28&7i;VDYMtc~(AlFiRUpoUT$u2&=Q0Xi?RHo!teQFj647J4X&=5^dN zNE6}77pQ8I*1!$hPM*fSW3u1U6Uf@a>uhI;Bw?-Lb=;GTVU z%2*?ztx}(5hekyzESy#mjUuwFQEu?(zKJpxHLh#6ak7E5<4ed4oK7h|^)%88uo7!o zL2R!0iAVS~hCnDFhrGA96J1DYffGA$(?OVOnECkz+7J6KJxj8t3j`=8ElkLiy z`x$}|a&Rv_SCnF>69uBEx~kSz{+UX`6;}Qt51;QabcQ4h5N>m?4T}Sbyf|-}B#9@fvrnR%tc!alF9`xe zB%=RryONt7OL=c!!!LpB(l{^ionMhTt!s6twb+!2^yfYYF+Z~~EC0H9 zqy#dR6-1LVXpWFXRb2u~9=08F^qti}hGQYq&*>2siX=d%>s8x!z5#Fh8*_=t!uC4J6V?XLJrrFnoO)$z?xlo-pDUT{<%SEKtN+T966!+e$h!HKKk@cqV0q0g(R3;i&u6Qo+|9 z3+&8UVpNscy#6Lwk1^8dpUIANZ+ykLkw7mc)wkSreXQ-6(wW`yH!E*VapU{kG@ZWBYC42vbsl`kDU0UJ8@{DZY{+i~O~`@_;)U1|Ov_@S^I5ngoJH`a7; zv!*@us|}^WkW7g$LQ+8f*l#CrUg}K**EcBodm73P4+L97Q22rZ8mB`lX<)SfyFeIS zJa!aX#5;0Crz%cBs(=CL%RMag(@5boP`FnB3;FCU2s-D7bu?g`pfbp*Gv!`cVK9ww zK`P#<#fZ0siX*N6@Yx@4j_j7W8hZxW85`IUS>oDp{0 zbW&zb!G+?61RR4$YV{XrEfB{Thiqrnpl>HES}RA&!*`YZ zU)83$;h2#d89I|BgF9@nJZ>!{4B$31!_-P;q|e6q>c8lR_!v|A-+DEjr5S*hK28ZZ z13hT3rvjwFLDVQ=7yk!MZ>9vGr#r9#jzN9f)z|@5un_GPk!b(LblCtH>2yMXL(t-O zL}36W3Ls{R|P+g_yx zz=ee%yONy#@5mq%B!fz3hW%A8Shf~ zc9?Zcei?iIeXg|LKDZe_v-8=z4I}E?2EI3K*?nv?rKL#O2?+t&Mz95UQsBpe7;H>h zZiRZ%rA4gWNUF)y&4Iex^Bdn^^F(PiCc|+3Z;|@nyWgLXFcCds-m8Dbpz+C z(^7ljlf_!4?boK1qa&Le1rJjtVp?i2^i;l$h@T-iE<`| z(Z|HD1}>1iCC$KaMz=XpDqESC_eVCyRX@g+UI8~fWX6R`#-!mDo>^giNR@CG!b;hk z<`ro&2Dh2nKiroZH|}m(N#hiYn7@MvZ^1yAtj`D;7o-`If<3+DiLk^;dJ^Uc>sNT< z(@n&zIJAH{5PeW7#n?iNg~kgQ+MY;OD%=D4p_%MKLPTp~>lbAS}mWgwsk1 z!|2k2f$BeQ_EZAe`u#*BE2gxM9y?-$w4$wR@L z>Xx!X&N6htA4QxDMjPXbXq{>eWW z;Q~v*ECrkswaU#LO(PzvXRiLvy^PMk<11fP6*%=?K7mKo(30|Ksq2kE*YPIK<;AS< zY@l z5-OTkewWGq_3vrihv0!%z!xbNc66L0;|4}PLf{v|q^1JSTD}F=Hy8Z73kqBa;tSXA zi=*fb|EccNgNRc0Od8UT_a$F@myXg1QLiib`kEp?!34>EUhX3=%%&uIH>rI;|*I&7F72y!7b21@5p zHK^q5+aECbdhq@9D{u9}^TB{#M*!Q(tgUs0uIvT@+ zQ%D%zA0bIGijDbS32F&!b;6vR&Hxu($N$H`w!fbv>4Z7}QK~BiGxR3I z6ZAqTnjH8FSVTHxCE1AEd_Qf7@+f~%?su?A2BEDGb2}kh#w8#53UEi>nR}zY^fpl> zSxohHjXaVi+fkF&qT z(~(d|pjUYW$x5JG*7TYZ#e7p~y(L=GM)#_=Z|g&gDr;0!)V5Q# zBlf)P+jx|Q`PJJ$ug1IE?pER4afX+l`Ws$qn~ZI=LF=DIboGI>7l@c8cH!zand355 zQwnBtPj?l#AMJMAm^Jnxspw+*0(V#qu+G>(y7Iu6OP?CYHUW)DiU5pe+IFjFBsKM2 z&dd|3?frjCR63>JA+P`@>kt+(=D^yde>0N8YgR5b#PtSRmY`WZsp6-~yV>UL`eyF> zZRNf**n_TW5>g$WH9gZ0#79&B(mv$b)?*U)saK`VVRyg#cL$I$o2b6^okhY8+k_rS zRg61E9+f%ee$72im?Yc%r^Xye>Hqg4ze4AH`trWPF1so3?eJNQy+4#^zV=R|rYo+S;KLL4p~Ih>{_Dz%=MGQy%5rO}4xp?!Yu>%En7 z`Np~0Nc4X_nLqX#?0o4VkMlA}VbF~ExsTZIAVc+qncG3+M$h*Hu^A1(+CLrYdb25w z|44zbY{=qhthH=hF z;kISvD<;YZM@`k^F8^iy?W>ngwPN_Acf-jvhT>mJQaNk@-TlWy z^^YgX1iSJt+e7);av^A+Obb56DE^#taU_2>#>)O;4L5&`h0A!(84#4Z?9b7EzH$QR z=KfFb07@ht9!^*$IdgkUS1V#xPUio1Uo-LmKmt2a{QuKLAe7XSo4gzvbHjFR6jPsA zYUzp-Nv3FIj5mpd$RP>%%Yk}P;n0*T?Kl_{I)&$n#FBg6!4vyuC1ZycTX#kb^<_mv zEO~kmHi-f%PNF`eM9O|tRV=zDPw>K_nyq&%qsnn{1!#PZZD|xwWv%u@@^%qNrxrI3 z&^%rxc1T8NTgwUERJWeDXsk$td2TTSQc`*urQ)2rnV|rp(WQ7pSzQUY=t$U3!Wmx` zO$}ewE`?WNvBMgQ!c&p#i?(x?Vw^*48^EWb8aoCXYlg-u%;nj};udMz$l^qkna6IH zUcz40p+<@q+R33_%q$xHFaSjn2202S;;>66I(@> zQ)oh>sbW`ONhi{VpjCb>Wi;qnJ2IvrOp%>cL^ms$!Xhf(0Nst-Fs>3@op}8hXqM9Q znp{o(B6zK?ZM&V&)s)3jFqpOFbKgd5@@KFtDyxfxU}tTNxi+m$d!rSXOv$s}8BZ0! z)yNQpGUM<$cx&W(1S&sFT&CoSr#EC4xSA@02ZtzQ$5sXIpbJR|?qv(lyB>S-P~4eG zTs_Rq&nsN0vjT6>z`(y1bP7uX(5~X@?{Aa)c&GhyIl_u zLpC6s&0{b?y48eZo!cu)6?q6zDp%_n3DNX-j3?~ebm973z8syJ&Fi=W=H=7R&3zH5 zc=8&~|6&Ro-6Hh=@DwyO$f-*MI{pFzLxA0rNm2q_2$V!9#bAo%)Pf5g%tCd0{rOD4 zG9a|RO}Ggd!+S%m1~Gd&0n+zrV$@=WaEesm^grPf#fq`s41I7N(a;VZ9-lA%tZp8f2*K<>?4csPAc$K1 z#t|>ZoL86F{3fVoC&1-5f%{e`}bK5;aDu43U5*Q;S%XTB{9Yi%^dbWk{p*CgV)6w#5Gqo9T`j@ZRyFt3+Fh+=*O@+=AIf-NIVgi0o@}w)B23pA+GtH@Hn? z21Au_%3Q@F#+$|h;;_Iyv0mbhms>_tG_8TEV!G$ST%cKZm(R~c;AF`KX{k;l6s-;; zY&c`7f}_4Jg}j*y_6WYy%G@%6yZrtEFC;;v>`l=ii33&lK(d%?efV&4 zfivX#i(a{yON%s-UnJG#9&}$G+PTDu;!n$;zplMHeUcs5!0ehyymPrx_V{mQ1#o0l z*32Q#H1Du`eN)bw{P2AZ@P^b(SVJcUy^5K|fb2fc zN_hCG0t#b%)4%{Uv!E!(X=qG<*w6a~T_zAns~=76GZWf9Ai-H+QK!m#ObR+X#fZMA zZ-55Dp!^bVpeqvy>@gf^d=p8f)5ve^QM1m(lHg8o$b&VUiK1Uyb;1l7%5sDaUPwN)V^r8 zVvnC3wk>2y3_({)jBA2P9}zDo7h<MuO#svx_nbe>u#f$4A~W!L~n5UQj?h54lgTbd!y^+N=3 z!)DjmfD1)wk!^^(0LFD)Nnn9BY_BR9W~-?BR?4thUHB3)zd8@OV+)!Pxsc(uwuLoh zCJOpV8h9Q+VUk{eaMg6gsZ)TE&wy7umk60<5ak9RI{>6jIv^_Pnt9_Vj^@Pt^e@f+ zLQxyk0e--u$n_acg&f4OOnZ7+xNs~;HB<^8&{O_=Ibe+nP`?nAdyU1nQ`G>uZxV=p zo~ii^vGMN;J!l})7&{)7a<|w)L#i_Bt@RRd+y|PQwx|=JPKqgE3 zd8U46QI8uHpx?{m=~;KOG57b8?aRwytzqr2S^EyPC=a^7*#@|+GpWJ5HYHb&rMq_I zWSob)e$1u%zW2y;Wn_3XKDNieuU|>A7?OolkB6)&(5h_Tn}-eiGhx^RLqNM1sEecWLPiqkRUs zKwjM*0{hdgoL8D(eAQhsu8rCr9?7UL)lfHkx(C62S_K1KRUl)Y9+tSYy|s+J0H*&r zo*DlZ|F|GRu=%!fbjvMGFAMpLoBOaKBv6kSNR8P_6yKUN30ENZg1w| znmk5~^q+rFc?Uq!18=hBUA8%q!|uK?uH|{52e~5lws>z##>H~+`30@$yVlgw_|tYu zk|%*oQefl|U@LK^A1ZQ)NjK@fIM;05(MU;P*}#&84y729+3CZV12C?BzmICGe&0WT zgS2*spt16Pub+%|(~-aiC5~mGPxF0iOuIP=e4acw^%b1d0Jmzn4A0=kHm-l4y*v)v z>-*IrKIh98T8dr1&;E{&ex06ERD$(w(Bbi9rGOhkIZ9en)UYAXU^JUdL~ZfwGQWAd zjY=#M(~&W_Vm@5jNzCv;S(}PmJ=ma?Rg_{Wk_gm|eOE*g-$L^KjmGoc{=EqKBf`2; z$y!30Hbw?558;8C?|CShtFX*pFGx52FbF^a8k7zl49Es$OfLxrL<04Zox4!qcou(U zyhxCa>Mo|M*R+#ZBw4)8IQBv_2Fi-1(3a54M@!AuKI;5qLfVIQ*c=HpBGfg2+FF~Q zEYu#-#6w0bxUlwwauvqQ-JA2l7 z+WdF9i^h3$h;wsH7iblIpm@~FEuj2fLMvuI7gX;#NUX0sLPMh^odBZNq0xJPJS>K@ z(*&cRIhCwrnoT8obk3dtW6@w8TR%Sob~APH>_#q&IwEaxC&?(4Vm{Uqi4&M+u9!zZ zt*~sNkTrsEx^sZZJ?=z?ok^#2g{M^3-8tFOOJJ`iJA&?c2;84c?%W;>xOtCNIC7Zyxhyd~FoUXsD>7{ntyMH>;=1|Oh91m83Nip~++z|pl!v&zQk1wxg zZq4qlfAlw#-`u0U`sS38jg!VSD*H6^2g=o|^ia()P>v#GleZ6S`@l<3EYyAC_{;kD zk?*Wyu;L@n^MrAqpue@5QQKeTKD6yY%Cby0o9<=<0*!W@OzFhNVT9d@>y-;XIi~*z z?J}NL+WDd-TL*@03-`)6n82!a;1K`3uX(Ha((I_L!?WT&WuwN(~KfgqemO$jSa=4C@a$&)gfR8nijcc zYG=7i{uGQ!XZ$p4ywGISPj(7}A;q54X0ldvvEVQ*g*)AH#N?J(Mq1sFd$PN0-ZT%` zLnP*U5)R<^LM=$P8UqFES_27%2lfLAOT%PyE4^|nvqa>U?KkEJ zm#eVy_`&8c7>*=Y!8fnE0!dg z5SAqdd2>=4Y^>jaE>1PbxJWDpx#i)h<~!{tCBM#Jw$<>f>`H-{g?wcaYkk3ZamXAN z??gYEv5lkun2awofo1rKqzOCw8hkKL(;k;f@ROIdQGlzGKh%p(slRl zq^mNW;coH}?>^O$?4mGLa;`T^H2Qn-Bz*28`(Rp9?ShmfhW=#nZ4rrSsYTROWsKq` z2H0w7=R*7fJn*HzE2>i>03OarjTBLQ)~-ztRc z|EP>505s^h;^^mj*-8FI5^qzD6!gjD$3z^AP|Q*cfgZlIH?y|F>1vful<4$w@Z_QQ z-`VV8R+M>psyoZo4-~JJ=Ro(O4D!tTIk=?pOL5@0ve4r&oB|&tO*4IEY^oeS>}*t8 zO@kUwQ&7O-ke=bbW(|4j|FD3-r^HBVD|`Q_p4BrHA$J@RRU48oV~kXn1}0M z^aK6Rtz=;9YVvJM<1ox+F)OyI+*l~AhZa|Gc;s@Iu8R=Qc9hPz+l^4Mu1nC#qU8dQ z{|_DC09^UgEE?OkHr|*gwrz9cWMk`WY;(hnZF^(ewrwXb-~ZnG?yGyhSAFW#R8QCR zOiyE`r|Z{Zp)8GtC;7rE078;a8$&)+EcEM)+Q`?w5s!G#H6V+OQrCbyn-}Tn43${T zlTJV!3EZTpC5R-$DIj*Yy<1T|zTHwt0ZhcpL^6p8I2s$*i?D2IYXoz+#G|J9&7x9>n{U41!dl&isSdoeybZ)qS zHJ%V|5c1Gu0`i(9nn>5;56^1iYH=UWH5<%5sP*!k zA-tE!dLVnznjrS{vaD4O>Ky>u?b*M%VsSkV#5g5g^F)6<)hXW*^Sp15ZkXLk32Ukc z57b13xKPvp*sM~azT<&FB^H?E{5+H(rH7rDIZX@V^b2~e{v#b0)IDT`cjgR2U|$&z zJvfalsvN8O*(nPiXg;B0XEIC-KtX{m4c0`9B%th$h9m(!q?NKKcqa#jmdKXabx5Ll znh)kp;a$w)snXO4;&34ZW+H(=OsIiv177?Lxr|JW!I=R(r&+`yO1sfdYTMP<_*?{C znPOS)yMrwwPlOV{H@0tD+KsziN6~!8PH2Z`Ij#^eU~2qy5MTCgNChVN%P9#35bX=I z6WKSG#q}`B*DJ;#o&`kqb^g^WjENBu6xXY{gbS*dJKo0&nfG zp{V85pl#B`k%}x+uq4qBX=j}Y-Yv~C$b=ga<1f7;^J-FEA%f(wb-9NK<5r~CEfP|4yuI87{onP+D;xx5h_vabKx z@8I5RM_y?aB)2xS-FJQi9=5A%x)Ytp>7buXUT3$03}hI{tG;sm4C2&NB*#i7=*vxt z`^-X^X&C5nx%;7%c)&SkO~)Y5OaH5ge7IH+veo>k)_9xA5eJEf1_UXiEU?$%t~U;w zJjaUk$%j2%%&m;EZp4dGAV(?{sxl!IUih}XWFwj_k-K&;9Ra}DvLPqkL0lM7|D_Pg zzA&}Az^fwl#7zb4#c8X1iq^J@%EAOK=X;0R_S=f_qQJVY<78KAMwi^B_DF(>(MrNZ z>AmhTYYE2x;pe4y{ z6zXSwS>Le39S11ofUhhg-lKkI29ZIQ%Vuzg#$$6{o=g}-Pkex2{miw(XKW=qN@X5# zXfDZbeZkJw-|KW`r$;AdzC2~>v*}{aZRNh1z7IZq(n87~pV{x=nFiTdwf8!X)sIcI zKu9)VeueB{&0WzqC}U>p5T~ZJ@{9H|=H*8|p^#ktMVNHwyx@SwaHRdnn?&ZO_cxk| zZT!X2_Kxo3)4E%wRO`>EyU z)UU|i7yo6fu$Zq5?==6vy_2WkABu0L@mhj&KZf&+ zx?U5^U4KXHnrt4Pp-E~jLjSI%fL5_hTFYjcX^>xbxhv9T>bW-vv{ohxg8!?b3*wAe zLyiOFlJzHq7X+J7i{ApgNDY-pHd|o9-N9Yl-(9$JJfpoccj)`v(eF{-%#M9fnt-5t z`#284c2Yo7Jym#uqI>68j1AS?nI|ftQ4NcK9jhbKO)>T4E=n(Vvs(C-Z1lyE4ow%M zl~2au&A;C|(!F~WIJ`^U*y`R6)5j)REGGheWbpO>ye&{gM^!2H9&059_K0|loUQnN z9Jx!~@U9Qp`iPVrhu2wMcdufp$fJE=M<(QemG$cYFJTUs)xzkIf*f6*K z_zEC|?08(fR`s)>;!$6YGH~|@nruQU=Mh_PozAx^xy(Ypf--CKks1>H7<}!rYO|_T zbqULG&mO+I47mX$qe6DA=8jVTU}t4n7Kbr7K!54`1NJ4R3Wc~UR2~$5K<4i*Mw_}f z;`LZDo`03}fUyGpUqIC;8*@r8tZ8U^L%4}OEXh!4dN@Vk7Xv4%8MNJqqceM2^ zN>1A66EvNS$j^PP6HR_J3zj6b{L;#Gs*wZ`hLGAFf53vab7N`7}?-m7|*F+{2A<>)q( z)ASy8CkAG=Gf|Z^n{hw}vB#91@b9R8y%>CawS*+iBoyR->u z{X_d*t7KUAU8_C6L3|5EZlSF!+mOL2DZGBpf&sp8%DoeGNC%S`8j<5Sa70B~uIMIF zrH%_(wz^?EJfv`injcxwb&-uc;8@K7Y)R_Sl4C`sN`;YI89O^&;E&ujZ;|a@Ub*0n zlBz>p!*hBeDa+qqE;v>yxAchVP+(rTqv?Y4OrF5pZqW#995NdWvzOXCHV>6jGT6L?Zft2-juNo_L-YRvQZCCMS0 zHAW+}k47KvtTBW2vYe$hY{m-)yU+KkSLf%4?d|K^_5JabE@0Lo@a1?r+b!jiNZ`Z$ zllff{1!1JEZS?Vxn7@d)xoK@3J@DpN%9X{k9Bf%i1#;voM~8bHkil+dKPJYGcy{0P zCG+NTmUDA$`?AS#A@V+eIGS$Dcc+|Q1eBAjWFbJZ`vj*WX84i$ zT8U07`DTT~)r?Sh;Gisq63>qmAF_T|M3sfr5x(#`Cyq{S1{cknmdL2OLmGuh#4cpM zd7EMCRmzvR23@z@>?5HJ>ECOK{wnm3nMZCo=I6`Kb!qm5+n#8LJG8xy_a@}j@X0A| zI~7yR8BdFY^MO$6i!0Gi{H%T7NqdaY)kSqCy^{E5d&JE=f#KTOPZ-l{PW)G-;CC?Y z>61u1=n&b3@Y%_{d#?4fhZD#;6uLye8Qd+Wi=>BV?g`Rih5cesW@M-mNjG z9``>x19Wp2fbkuvncku0()X(T7n*gQI0(oSdXrL)Sx;$I%f^h6yuU&+cm&EkmW&zK zsGB@_90(+?X$b6%L_i>SOF$DxhdNezB*MLaNTi?R@b?@H`pg%4wO!S!c8hpGo zu}NF$&h(~a1AQOQgbt4RH%`m^s)&gBCl@{UTkXK7w_zQFv&pstem>vl zr|pl~8R_({_veqn>6UJW0!h}nEHHa{To)3tTiAm1 z4rPFL4h<~mFKHi67&F=r@&UxHB8!94qP{{Zc_@t**YR>`+jCuc zF_z_(2J1rVco%a%8G-9sm1Z($M14h$!bwq8W~(v_!bMhCMy|dXdbp^janV^L#YB6J z_?io@NV^T)fvqtvKbc6M5ZB<%pJ^O@D?Wd|o*)5XJ)pELe_dh24RNDveRrA`m$hBP%G~Si_EK`UF!sf=1WBDD@%(xb9#L|c*Ta-)PlwVphFo*jO{$#+!7n>bA*6ugv zl(Vk_v>I6bmNn@YWu0wBuNXfTDiMMBLb*QpJk-cAALxAok`PWj}E1P7gf)qpVb8>F>1N8$9gjb!(+SmHB}WUdH^` z@Nd$UEX=I`eA5e*IfcmslooiNx$3kci8Zi!t8ta8TH!f|z5Wo@y<`R*06(N}Z5_cp zk{XW4K%z4IcE5_YexhC$1Bm8pOZbxpO_ea|ZQq$KZ!ni^$(Z;#t&jD9HX%hhv$4LL zUj5e9X5cv}Fjl#tSOA~TRGlcmu<>S(E5?TxPd8>^cirt<(qH;m)dYMmDslsr**r*} zf4Ob@<@E8eGdWn5H%|MRaTx)W&pV@+J8AP^Raf?)k#p|AP1)h$J<>{FxCGn_k z_!7CFyZ4F!zD5mQ)4zPLPf=;ZdXcr7tEgW7T*G|r5= zz(BfQ?(Z(WEl?qSJkcy@-)HANyWXBjkuMr!6p){dI@Z}xrM{t2?WBw4qf$}PMLJ{3 z7kFSmi=V^RJ@}i(Q5P7dQg70ZwpMkKR)q)PMN4|nEPT+cSKfhDeqb2Z^o^`)sO0;F{Ypv)2Akk)w+ z*n-Oa-Sw<|?69}n*>U?fk~l0XtU%iaD5!loKF6mt;-DSmbUgn^BV3p5>QELO8e9k8 zt*`U87Idon4~Zpz#EF)j0SDV(=#D)t`g|Wg031EJLe@zp zQf0>n{3jHI(qK)TNP^(*=mJQn3@69{;O93T=7dOYfF?igdW*NC`&fbHY#)Eo8k8wy{DqQX;l-%o&W_ zEc$}MwA9H6-$I6~S*4X@5i*>_f_Kj{%dbQ$#f)9-PvAJUTJRKrXUQCsL^kdE zqV!xa(F++M(8uN74w>u8J>TTXfQ1j&Rc5n~O}DlOFC(lPdOzss#F2W92N%HLCtCdb z9Uk0pvCy(g9vq@hSsqW{a{xzsT)X6f1UEC$6&$`jp<4?4cHs?jaCK@N2twg8*}$vu=rxZdu4i#2**gX+F%$o_bvJtkaN zae9-jjPEQ2hfufKVJTxS=%SvcQRx2qv=xMY82ipBdud=Y_t5rLw9V~a)v zUGKSnMu$=pp+opury+1~1`Pabq1_I)e@UoOm8=%9SJzXvEK@FT*Q-3P>h6dc1 zqH@EJUq|IyzJ{FH3WsD(mG~R;G{^N4u1ypd1nmB6?!d3f8;Jv&lD+%6#zv3N3NKrV zP>X6EBI>x?Dr%L~dIo;(*{`{7>+B40X*lpq*sif9)Ug!WM(Qf~G_keixmN*ZXYa-R ze+&!RTcJ{J!T38bY&B0H+UI+T&l~Uhw&{E}t`j69cYoM6`M87lvfS!q93LZx6Wq~r z0ge`}m={@&zEzYB5uA#fNRgf2OaELs-)VQon1bxr9}`D17;_cBqWw% zs%4y_lMjs#>?hyD!i@l~xtg>GBB=dOO|9H?J-C@fEx3oijQsUF(I0_IIfr5D%mwW$ z80!MkF+g|{$`YTi#2C$r7F6_rP|sbxhd8&E0&$Sm51t-d*`JrGJBSB>G}0o2jR+4b z7A{)TCX#3LLxVghlr{!B6wfgssSq7c{OIK68`dnkkynWI*?3vBz=Jp8eCf($#&^R~70y;Zqaqh3u)x`mVbi-+F&q<{|{5jOc9(WAoEozl>9j_}Es z$8~t#Yq=7M4_=QG>kF!yiAE!pSc4dip@0URN#pR3ZG;rAr1%?qhN?TuEKV;p@II{8 zH2vOY<9w<_VvKR^Jpr`Rt=Zf9o6AoB4SuE}aMa;0njRGqcK)znFyQlUaQA}b<9lXc zsj(XSK)mrD6OF442n}E{9%FD?CVYs+iAg1%B{h2RUCa&Pgo{sP5k<YsnZdBnX(ZT2sBf@J#EDD?$ZNof5aN z{3n$Pqr@B654O|T)qEkIf*r|F`bU#4l3<``0_F()AK_2OKmrw{=xFI|{pudq+?MHlbL5&sB;#;KmK+tS5CCxK}wxy&aqbasy5991`z z@t!@2tHU2bpnan$NpyigEK|HenIMweWB0pf!w6@0$bA4~=;bN4r+R^g>EA-jJ^M6Q z(;PO3M$@$D0?zRpF0~SQ)=lr3u5|Vkjm3{+BQ1WDo!*zaL$KZUvy;yVLqC+eHi=-v z;cgTw$Q;!tVZjwF(&pq36lJ4}Zy3;30m#Us2JPQ7fmdhP!zgfH(HtX^K)gE|5)cwq zPp@Q8_m2NlwlDBB8~k@J$4cRD#A=tGGtYZf`|KouVtW|+Nfq5t21))`!vO&F;p4+K z-x@Y?_vn(Ij?Rcb-m&dyvXWa_KOIBuzx3t6K;oO8j52|Q0F9Bjrj;b_gc%`Cm0UQm zlsOsWTZmN64{%SoFU{+={n6u_DzTLmG|_q4iR7d?ipi@A&`;)y-^6EF`ye$R zk6K9=`H~5AALnvGlK)mTenO^+>85l;!(f0jvvU5Ebp>TfQ6B+i2R3MrMiVxnu1{*% z|F&`0>i3NOW%xIm#12icx<2%qMb1#b-%#csk>bB@AG!K%CkVl92cy&f@-98bAF@T< zlMfeY(T2&~iuO%gglXkYt5k%GGfMU42}w1G1tfSxp0ImFDCsGmGM8HCDxX2ogOf#F z{5{})X%bbV*5-?|kOM|;gw3&OCl0OU_J{Fq1WL=zO+!}viqXhN%ha-)5;m{QBi65` z6@!m425+HKkC}h~!FLa2__+nCO6;zxLeFeYCY5B>4r*CShe%)&8xVz>Rr-W8tvt^m zE-1b510qFLCl+0$G;>!kH6ao2y_qs6mdsDmeXEADWMa!OAQT8qwl`$S94P&rA59UHT*yFh%Os;`8hJH0zJpj^aKZm_Kewv+Jyq~h#20Ct zUgQ>rHSi_+_aC0SrU4RcHd8}S%}`p|z(1#oM))w*aXTWw`X}&WQk{^bzk$6&B7;O+JryMfspaPx6+Gk!iecqboL2QE^vj}-Qu4UaOZ!ujr*rNce$UwPKk z*QUqg8y4XE@M-oew!zxgA@YsoD0}nHBDq^igZB=Xs^eA3UTbQlCxhap5EZ*uO@p_M zmaFALTEs2m?68z`{*xU(u~YKO!VTv5HZ>HnQm~BH2$f##j4fgii+7K9r@B*s4|Mij ze8Y)0f7S18Ug+${HTa5s)`{)E(AoD08ePc>G>^dXCCKOjD?J%1h>+Uf;4CF;uYO!d zQr-}E$uaP{BMb`ecvaTN(vxKAw-~jNvQ9Jx=Y%yzP5kb77N^SQdODM) zO`UKGvrCItNy*U%1?h1P5N&NI=i^FY)rkOuUYNypf0>lTF?JVA5(w6BK8CQ?yMU=SVUtE>_iV^FO0c$wcm+ z(qJSZQ>^rY>Qz+I-WNW6i*;(X<(Lc&*2bPxz(DoA&55*FiuNwf?9-sI3XVeFj*am? z((=|-Vzq(lh6!=q6Pet}OUpyR_lDRNxXJ+*U1Pp6rc3+)qn|wjq+I^cppAN9lWl|Oy4GKnASF?#`U$aLK??Zs=8@eB06RT~5 z3N`)Qu_ENz7Xkv_?S$FW56hdjUBK6mUX4eApZ=_PUMVOOr^v`Sh>i&ryRk1+C^1nh z?%6d8ZR}RR5z`Q}qPX#$R5SBTqT{)w52%0ViJFO+_nP&Z{~#L`T?i{j*P^PGH_060 zj&mV9{Rgp3Su1CfKEx6ClWbMAG0f&a5ZOcgaXw_Pq7Pwb=*v{VT7`cwtD?5(EpmGt z|D&O>#~=49dh!1>?1nBsfg*=cF<@exF<@D-BRsWd(dOfF3nmzGolesxC(AqT7LK{p zqWf(Fd3~2b1P_UNB|mrJ5_sm8@#2mK*9o2V1Lr>KVWUJ*9cV zZiShEWtJlTx%a+kO)%Q0VXikCO=-hYj1O7V`)Kc7utI#LpvG>wMf?C|;S$;LMFwVR z>0~{%bkm777nk(*cZyQZ{l?_@KgEvsz;L+AYi((A)m;mF<=oH!Qig^k0JnvP0D1AQ z>>_Oi%*~u@Qn@4$IY^sUyCibu^8`&%LO92Qp32EApGhGjGEHrvG&VA!vJ5V#b#w*k zV0mIYa(#BAQocCX_5qxNJ4)p{?=L+rCGN#M^v*f}YF;*lC}wVQfd4a{^hJ2+dt_bW z*~X$Hnec7h(XbD>zcts7!7e?yAi`0PdO~+BDllg+EY&4o&pn~d^nC&#$!YG3tE79| z5!u9euTzj$gZV9nM0;byGK$mFVwnQSwoxBHeYJfC7eD;+7`0ZkEA@o-^pZuzWO)!9 zanM-;^^dCgr<2_l$>bgxq=W;{T-Wi;O6kB-Hk~T#MOF^I7TpTSc@D6sa?DDtWM4I1 zM+k?eh76z;*F#|z08uDo!9A!Y#vEp*mAF&Xa#AAhEPqxqf(LW8Gw1i7r@iK){E9TE zP$y{K91E6cRf4jY^AfQNT!*17kxPIgX zFi4^0C*lwRw%~MzKB&je&t1WD>bWA1%ld}dI!liCsFqdP%Zy;mY+%E9o&pMSEo8}@ z{Y&8iULG%GKjN9zUwHMhNJ=QVJsDYdh~A=WD{yaM@g?OXQHlBDF&*Xbb;e$&Lif^+ zw19Z~ley&+Y(L-y?B66lS(#IE!oV?7#Ok0&z-RGyRS2Jy2G62 zX^#re9qm0F*}3t2nym(@CM4rKZ|($*rr7&}bCP?F>}yOA5WpvvgS(wP(wb`x1Ow+-o#31k z%R3JlK5NRb=vdZk8ujC;QZAl0o8P@Bm4ZsRS@@#~fRPH|+Om)>-r%+#4;l~?uJ73ylo$%uJ4bz#TXqoBLc zM%s0S&-POx%CGA`=W4Pq%9tA4>EwNnD>`o;n< z$H$#)!TcQ<7kHY~?Q(5ivmw6w%!_B2Cw6VhuY=*2^Sz)H2y|ch0cRKz)1teFL@a@H zab>Am{UZcI_rT=eWtT6#`2~Wf`1h2XJgg zol1Mf1I?%#k3U?qg0PSu0~?*6q$()32Tp`rhGwYxjG&(*l9;>**9=*4 zMUGYIVY6g3h#hEg#=^4y98y`3nM3@|oRZ$7CR!&}ugz$uvC2`Of&NgA75J87Z6TgY z8_{y(rC&XLG8ES&_!1H*m~40Yb+3H%^d4pUtJ+Yk%t&g>KdF8Ylxd9jGop$S_fMxI z-Cu1aaG-MpENI`dItbtBflUWFHEx;fPZd^OV$fL^b{&nM1u`u3}}OH z_mht87(62l5-|V!o011u3 zkB~-1(F7hOFykU%tcA3&fJIu^tRGCUEJftItzCGTdfqsotY`0F7o141h`K74Ci(^dfttRXWWK98EemY7?I1Fa9p6}{F7(PMrm*V&Q_P|%AYuFC0u=G)jR?HSBkDO6 zy-%?)<`EAM+9U>Um)+4Z4K#N9=L~bVG1Kg?o#yXG-=6txs{0q!{@#@DGbuDx%PPiF zO|0D9l?UiRXl0<{o=$JJT@3s_kpo%W9X@2-y=P1F{<=n73{Jb?bky$L;5N=Ef(4S) z{H6Mn+zUH}=OYpD`We@h-v<2%h8H0`k^S#NA`2iT?g0!VWw;Z168Lt%S@m&s@>(XO zz!dCV&ER-rlEDC%d&A3$oQw^*-NMbkRJ(k^F`py7aGxVpx$3yg2RFIYzo{IjPx-kZ zVDTup*~!=*lM{(5?NqS>47Y_#x_b(U`Vd$6Tvd1p`b(y6-=oZ2|8s*9Khu4?Lv763 z_$kgugyuWtjC6b=4Y0gEEK5>>T1qM~7PR2iXMSP7@douBS}^fMK;>nWH2edsZ@eCB zbUdhc%^RF1frK;T?k|08mi?#`Ssm}zLygVi{=He>`QoHsx+Q&bI($gWGt`7buN3kc z*fA_8Y3NRm-D$NUa_PvRs?v*3O)&(9BzjP{aqmC~&5pSY{@um)u8&2AxDI z<4%wzHY;`vB8To)a)XVYh@7fL@et&uPu4>B?~U^|lftIvh+{03yyq6Kq=NfRiFPup%NeiXzowj8$Quoc@PZP9sjufUapPo(54`pj} z4OddYR`J{It2viaRmA9(R~~{Dxn)gB?`w0I2#wV43#M->ZFt(-2VWUH0SJ?B4uuHf(#Tg| zV&jcNi!=Y`?k3mvp`k)NB3HYaGh*L7&n%%2LrD%b{{LuG=yMV^aX8Y#LClvD$%lx}3H?U)=O{148+&Ulg zuGPfs_;u$Bz@;fal^BFC`v!f0t}ax?Sqt|@D4 zz{Sx3BF+a!&k`G-ZZy|zCZkQO5e!KjDn1mXe5ycG`P32Ko-d>0@M=8(D}14M3^GldXQ@%=&0r#fQqE#D&Y^zy#zNmzaIr#R~|>gk+!3UrtO-xl-~ z)`TInu)b1oY0+a$*si{^?GRu)rvmx{J3Vi)io4p9a&`E9YW7%=BO5k?dKX@a#%%0K z3ZPHHkB@?##o;@wnCl)MS@CDgJ`1#6zMpv}sm9FTbgoWXHLgxK);B4ak|;x>eyT7- z)<}75;?Ut^Bh@i87h#D>9{b6W5EepeM8bI8=~%W2=vGC~>h~Q@m~O!+pe0`eS@|Ox z_({S%w@Ies8d%Ga^Xn<_q+`^x38($hEMtE0WxbQGUCOUb?=NgM#7lg38MyW`7TUXYMRrUpNjavVvd_Ij~a6gMl~O(yO!&4&_NxPOf+I;lOZy5+&H<}C!`@Z;3 zK+jBbC#Z<48kwy>Hb)>o)Xvzy(*dZm`8-A)bKl>k+paUQ;eaORK>@&Oo3WB}w*2}a zOz9BIp4M?3uO%x`2yFB_&D1rJ03(goJ#!u$VfQE+&2|QYfzwxBRyeW(=ytz5h^jHz zrlNYR%TC(W{q_1lkCZdNy&dk~PS0vgB9gKq)snh^$i7Fj!WThlWXUh9j@Ly=x?x81 zqIDQ+9!*Jc7{H*@#|9$p-uq;Y0y6G?amGeZ_(m4lI-NtWow>DHR<6ryy34x2n^5it z&QjIwgdEM-s-R?lO{37-SpIzWOFdfs?#Ml6BlqIH`l6fI!1YDAo)H71;$*{$qQ}{= zBEFpVlK1C9^>#kAjh}O9RB0qr8`N=)%i?wP*~4yLFDPLm(1E+b@ zfb7DbnxYH@;(M!@%jy@X+a_M3ekKH{llNN*VyM5xx}}5_cvEEIYyN!s(-BVkTH{lp zFB-)!8Vq!DWUh6COXTy`&iAwYcp4*wme^o#K7Js|!U8Ft>%2AT+^bSrN70Xt<^oT+ zBIV30jC4p(KK1HJ{2~(baVMh+m+k5%Ulmd(huV%dKa=)YH09UlH}$HD8F;B=(BiXCamNC1-uv z`iZVRrr3k=J`;iadZr2SC6BFDP>dnTWg;OGTw*fTf;$vT$_|0t;Gv74(_!Z85CEdo zD|+qWTj#I-lw-BFp=rJzcxbP{C_jDrQy}1*X&Vu$w0Hu`sXof?nuw40Jdw+BYS$l` zL2&XPILU2a5&ac`7TM*d-du{{6&GV63pO`yD(Vg@FCqVlp=-> zwR}s0EJ*51J z?s=?#^6`m6d`zT^ng924%YEDMv6|VbpGdj!lqkoNW1K!@g7ghGJ!)gm9ENwCk{mTy(&Iv`EWGod3~0j zNX@`k_-d-7#$Gw*OH^fye1Okb4bTIO%{F0!g(sYcLB%`duj9)-OqJW7nCMyOuRo}@ z;C8y&Kivd-zwIMVA@<2o*CdgshSfcpk;4bkWMbob{^)~;=2}hV0!~OSM>|pD?vKHV zH+KvXI@*?9@bHvo|MhtE2Ao3X8H0^~tuRAwjLtm6W|Av5a&jW_G^om_Tge_&saEF%5eDz+4oQ)t>0`wb{~ zFc!`fW)Dyr;JEf^wC;aBKP`QU_g}A1e{9eMW9uc!{`2(-UGm%C=huv#^OH{LIe9|^ zFwis9qIBL6I;>MJ*^a{aR8JYvy@0ILW$15VI8b@y^9SJ4>OMDHs_9RH%BN1zh5QEu zGO8oZy~SX0glGmRqZym%VaA{dl*&#(hU$1@Tp8Rj8-(l-V%<65F9m`ic;8|+Vk0jz z#}HIO>!@L;@48n%5?gX9Y1lOC$@h4+W)i9=Fnv3@AC==R82NkPdIy+$!o?wwdcr57 zg*BPylyJys4yc#Xl$|hOv07JcCAbF0*cVNzodL>X)OI5rNo%4 z-%CakBa}<67{L4YwOvdI8W#Aw=2g9ZZ)%tR(9u!(zPgf(X9*qhFxUKoM6yFUz6`Qr zFH5Xsb?dtfFv{bf)D3W-n4KE{wj00{rLSt~gTQfJfvzw%wx{ZV27XJ?0Ng|7dIC>YNERo(}Q}V#lg8Jg=Pv*In zsYbjPT@xLoefpEOEp?`P*k7xEl#7zt2dc+qx{*rmw$TDYVJw{dpV8M)fCsC~C~rn1 zYa-zIKf_o41~=^-_Fjs{b|H6*>v@B@!&EuSgWzxYZ}54!x_RDC0@sRWn~;%X6x@my zvp-+hfSWzQ#;a7A#9}&z_k%H)_V+ z>0qxOfv9BKH7zAEYjkT`m1eN7U7#r7%vhKxKB5hQijLyZGeQxW>?C5 z2oJ6;#u{vgZT zSo^$7-0<;uNx1}mx&qx^2mzPGS^Uo;SLj_g;6Tr}x9i^bqH*lW$q)C>cjU`1uQy9{ znSQAid!3J)cZqWOi{Fi5DuvmCyt@LMlL(&^;NhTyg2sQCt8wOV>T&LHAXp$-`c1-z zF%oDfon#M|pawYrjomef(Le1;oc;ls{{)~6$$x|OzX6^90jt4p7bybteH_bGghsSu zRj(Pz@FqGs<4G@gK=AZb9uFJcS`w7D*oCy=6|{7hZBZ1CKiSyw5XLU$H9FYxqQ(c7 zg7&4R#XH*a7as0pK&*`1mWKX}ImZg`eG{?RGHWiGQPw&{`S?g(Ga9NHC|;xvM=Zb1 z{f3OEl(SM14nT|;ZeP%B)ZgZfqV7X0oiSMaEv&bmWx!^r2r@do?BB7MfLdh^LTj%1 z+pg~gq-YmD^c3}~r}KU35=E^GWYqPEu1zJOil|(b`)7&Pz*PrV(SGkxhp(siz?jn8^(8Mw2oVky#DCvtJBkC6-xv?&&tLm1;L5>l< zq&uv7KXd{n#r+y>l4$Tl{YMb9DWI=iOoR`mQ-xHdT5+7!E;+VKBCLVV-(+XF|D@h^$s}AHmc>(SyREvqA|W(Hz!<2X zLC~ac#1}j@itoHIt!y{QwHCcCasnuo%zFIAK-1d)>-S@a3hCH&w|w zu3CmVeq^^guYK0ZG~E~bDy2+()|y%G%~`RY>uVQ}S|E=an9hyc=ItrF{7NKa(L0eZ0vn>|oRL#YwokqkA-^UoGNlqYINDv{T z{<+xm+)~@GREg0@bjCZ#`KR8s%ZN2nFinan#tW3I4 zZ@UZ6w1!>&xaSylyt1K;;*ozLYnFRo*#@}CE$rPL;j+j}msoR3NILLG$BG;}j*P8* z&29Z#A8ymgmBewSW%k7Nia=>gRDWxPg}~)lTvN3;zO~CDj?x^10UI;#OlKpQVZY-# zW^ojX&N{+AlCnM|?s=P2xTw~GItYdlLEPDjQ@ohF9F{%l&$RV({a2@qC`)F`Om<+c zUO==hm9vCHPxsjfQXOTrkITHQ2!x@Vhyl#nKj|B7#Pcn9E$8h` zW2&JGE1o6mpGU@vEjI!qnmXW^`2UBkw*bmB=GH}V=fkbIyHljNYtiEF6n7~0;$Ga{ zDems>?(S~I9ZvtV?>=+Sy?Zi~S;-`s%v#B_);!51ny%ofKg5FA7L%&PcKTi46+WHr zH(ypCcTL)zwnF=3Z9mj8o|x5p1j7Gcu~BmP94x|r{zJor;N(iK`2$ItJU0hh2-J-M zdY{h&k4yPk21vh*sT>{6+4QF)|1y{#P9lgysYkRAhhmm@wRPbRBn#TN(u9uQj`tT* zjNN11Q?su~UNqWhZ|B>J#X zR1QYES0Fj;=M1MwBV6DZBRIb%n!dhx;j_l~L~ag?l*&QwFCae-)}A{e<*vsKcQq`Y z2`}kfX&_My76Q}Fl>_O^Ck#UE7ER^Yxy|7o0{p&-(H{Brss}m zxHAz1AGLAEZ;%v9y8GQhWlhKHvG%?yezi#i>Qz@5?2O^*I2yU<1U~@@oWOogsEGcc zJ}ED|!{+j`Eil>tI2qcgi%J$=+uCK;; zP-r$c(5~3>ke1&fmDwQfyx7`YUQ*wB*h^Y{+**DNL^VJ%kNlhWB*G61kp?J}(fZ7{ z+T;HD&67C)Z+k|yX{%I@2u*UVhl5RFzzW=xXLq(e>ImFD8w+nedC>%q%F85#U zsAjvGS$#A&y2tBKV*OZ7*Nr-_!F~`$tSQ&w9v|iUeS>Kd6i=iHJ&U3C?F6l_^!wE5 zMWb*ud!b5EMpj=wD%sDqXv&jb!??~ur+g4Ke;iT)HAM>r5X46o<`aj7M=R#jh=<(2 z_|4z+tkPBNl+=0zX{RiBpU`_u|`*u5i^c`Fzh`aGf1~5DtfJPYdN`oP)GAGaxtCzh*`3z-@ z8gZ(TIO3lnz`SKi1G!f~MkILIe$aD!&NTL)!D)Ud=?gO$56K_!XN_qWY&^y%8>&;Bty*o?>#)njf1=dT@5F^J@lSolUCfey6)sC476K#Fo4J+B>;Zxoe zC>N4|(Os`_q-2srR1H42lx6^HLZtD0pRP>Ebv$q1CV_2Z2><0iisw2tAQ56?RWq%_ zjWofQhZ zW%fnpPj zbQX;S9SU!!(`c)wQY`w{H(I~ilEc_Y~E*eW}%R$r>eH)g)EYybt=*CH3gfdJYdc?L_rKFb*gQUsO)twtzv+ zmc;aX3oA9xkJKN>r^2gzcP=ZN52ihiZT~j?-A3-rN)8i>Q40{j0Zi|QIU|JDxWJAr z2lYjI_x;4y-Ig46jWnl_9Q-zb>ebu4S^w(T0W<4;>!Nf`5yIEM+8Stj(QCNad5voI z&$J#AjwTc1O*Ga~FCLy2!Br6uEqMkMDyON%AX02P_$4BcUY3yYKl^yClKacL+77)! z$|q!^61+mH0u)$%PMx$Nf-OOuwItRilya}-k?5}plIgSJr?>G zJ1b2h?f-!xpow8!%XAW;JJL( zXiAz(z|BhYYV&vH?|fbgObl+ly)$2F)N6D1i5or_qg-|RRLw^!&CWzk2)z9eIPKdz zC%zTzZ0BQW&U{QC+8OH;fn)tVMA=)q;);Gx_PP38Ew!DD^mtkdA>Q|i_!{5l`gd^bWUB&3=fHdDc=a`+;0s3En_E}99d}Pp1xZF}>LOuH zW1BC9CNsjVZ{gj;33bw4HEB}Vd5UbHFIMr_Ev58KQ2KvYrpFybg z9bD462`HX1lVLkILS@nfe>AI{#TNGzVWrscUx@UfEj^vVGGa$ADtTqVerEzQKc3x@ zQ$_{Y<-Zx*N_md!wBer7r98enHhI`54$SfVwAtV~IV1Z$wl<@?Jj0*bm)}M)J-o(! z5ZRG?Uc>&~f^IgdrpsrYI2e+J%Pj-0u1@apDA~nvez>NNgM1{K8Vu!Ns;XfU`{v)Tof6<4t+OHQUek+aC%e4o(%=_M z=B_`s(dwyvpn@cgsM+q(of zv@8qVK9yOL9r=ez@jQ`@cWm(_S{aTKYl;sRU#T-j=vEuFSug0Fs>!rU@KXYq_fL;` ztShs|cXV`neVx84b3+S>F2nj7iH*MeXy1&&U}fnn!Qa|#>&l6y`odx~)M68Xj!d9T(*#Q6?%rVSPDsE_jeZa*eIH~2Sfk4`H=d09;_yp!m% z@gd=fhIihk;Qg74i$cGmLmPeRJ{!aH2mzJ8vhN6a5XN(GHTBfD-h$G2;w=3|Z__;$ z493MP&_PX1Hs@&wDtaVm zu*VicC|0z9dsY0q#xOTHK4y!*UG?HkS%#>Of4V08d8Qx|uN{l{(o3K-O&n`vU(`)| z^p{(ylCwfu7~Z(1@G@O(E={@S+b;swcRCJ{$iiL2mK)8(BN+k1N&x077hj85`*`BS zmyO#WDSc=dHiO;*+(!1JJVx>fWoYCKls|@Cf7`9uM6njAm>Yk~lr63|0$Jle&pmK0 zC_*M+^&$()&zOoEf|9UC4wVJTmA~cMNw>9#(MT7B-Yzw(z44tlrdQk6--;Gi?g!F3 zlwlymz{laorslA~vI9M6c;L3r zT{?9QB&l2cl>iK2uS`HFo3jJqtVEhtchh!?Tb|s*(HcX%5aQ|46cnpy0nz1mxq8< zFP-J`S_W7Ay(uJ;SuR{u=()3Kmtjq|8gno7n>-&pkJxQY6-8&Wn#=tcIS(S@zpWRR z{1GC_s?5V~N8@=MMRN6nuvPF->oNVnN#BN}?xyv19Eh{4j-+-w4a(;wUlb{=o!vR5X4(SDS;?`FEyO-vX9!H0UQ2d%6E84uO^@X zW`Nb+{t>PuV}>h%-?K9GHF4$Yr6Z(E5_2JwBv^N9Q|SgO>DUB>!I+6?_ePe;J`-F^ zJz9W&Ml$ozKri}~zB(JCAwg`QDSyZ^Hd}$smm^GPoVK>Sz_`BDV1;=aX(`G=PLg2xR{hg>Q4G!5Rmcu!RH^n5dzkXV7$!qy&g*#rfBU#y)it z9Qi(vL8gnYHTYm;hLs7ZIfEz$OZWfCmP_spnCJ?7-w7Egp(^H6K>pNV3cyYRsyUM1 z>NoB`9PKX9I}^mT9QIbW6JT5>*{OK1A>#hGbLiXNkFBu^Rfhzp#wW`qO%?USH?lwo zTADbGiI9HsfhUh!O}D`v58!MCrNdA;aib(~q?FtYmB4&Zhu@#hb?y1pX*~OclnBh> zH;P1dt1H%P3pu)q;y?fV7ZJ{(d0)%eO(F&Hq~OIN-#su+;nSXx=ToM#1@v8XmLlAg z>b5SXyI6Dc@ntPickw_Dy^(&y#dzf#{tPg@3i2n9)P<@M)rb^kM<9N z(I|;%-uFyI#W*OO#NhS{^7q|X$;z{aX8-;?tNR271qmAW$gW-V1s6K}FTaMm+@UAk zn}F(=2&X1J2O$52h6dhb@R)u-P;HF7ANh;m2#AcqSpp}9M>VT3io!RV;(Sij;_3+v zk=o)pGz0LZXP`DEfnM61MlBhFSq(Dr@VE(k+@!M|V64RH*Sc2tFOwx^;`jT!Q8iB0 zzz;oUUWgNt_w!+A#gu@P?cvNwwK;HQPB3dJGyl~J{J9O*rg~n6C97?{)^w@;4)$jX zxV+bDVV2ZBVMX+kb!8M`-*{x<>6mfh9G#a-69oU5)7K40Akhw`VX)FvOyyUhlg|xO z(m&L>Wz3xTQ+YEm0@H~+GOlh(##8n8{hT@J?jl*5)~KLkQjPy}HEPmyct5AHEB-!@ zMez3dgnUT!&}no&a4m)Vz+~fxfVateu<)vn7(y}OMA6?7@*(1u*8H#^$bK7&<9-*s zMt46A?2?RC0I^arOWKGpo(DtfHAIm_y=p1(JUT{6@>ME>VK?Ch-XmliapHxYOT;X) zNr0W8+Nhj(bIqgbs9g&RQGm#kC*HcjUO5Zw9>Yqv6<)!AHbZTg{e7)WVlqmO;&VdP zIZss>)(qF1PZq}tV6;KTTyX|XNlY&=(n{;~B4zLrsY;;6jU8;WvnSao z9~fIpx~o8Oma5teS45?j4-A+rW{0?Vxh+(_AQ<+9wYwGWG{pqvh$(qdd_T0O5KqUI zZu}z6y@D!@Jd(l7L;2&BR&008G?0F{a~=h&eEv~1$Wly9--z6ZErdL;A5t7jo>Qzp z%!D6kvM&o$zP3KIOIb(Pm+wSqc!f-d#8*lR_4NOV`Of$Dnt-4kiFIhenq2B6y{aiY_B;A3tjs5r!? zz@p?|Z_9E_4)E9Qe1S{5{4FK4mzJFjC_buPIkWR5l@D8ezPAuA6lZXguS$0Iwn_Z3Tt<=+1j#y5=;=yge|WavxS&P$H}_T zZehL)_MKnGBxiTRVu7>#*E4(*AFzlJ>|f)reQ1+?&tRc}CbW*Ls%_R5dyR5BYf18!RoZ!ORbA3M1VNqp7L;y=; z4u{v*aKX&B!I31*LAqZO3Tq;O7ENi*pHFH=UnJE*XJ_8yaA<-?*^1gB@WpX-Z%>B$ z=J=Ds@S4j~nyk~&fKureZyvz~wB&d|k%@cuC(gtdfQzG&+vG`!Q+5JXN}sXO9~SUs zKvF4F9(B*x*EreBTGo15RsYcLypWcpwigPkV7NjUS5I~eQrP5Ar{!X@8@}AtqLJL}s1c*$7gb1Du=4OKNZuih6-t@LbK>A@>jm)6YR(K%N=^Mp zSe0cG;AlF@!|+J4?*sj4I?F?KIl!f0@^DH^S~s}v>v`W{u(@2jw#)ut$>V^nq7iWf ze@>jzJP%8*@Wjz9lJ-(V#L@E4`y%68r0b2{Ph?gWxOy&U(*YkwRc{Y>;&ks79$Yc; zRumTNmAr_e3Xyv8g+thU<}wH*tZgIK!=XwBV3jiinLwC}|AYJ{AFAe+mQFy)B1)=E z#ktzh?rE0QslDOcIOBVs?U+jS%<;cWmG0nhp)7r_?epV^DYLVq3vh4c>3DyeDn7W? z_i6onoH%I<86v(SnnQsG<+gY6cmt2uwC{?%N2f5Sj1hKMhAqvGFy^#ad!65_^a_Ew zHRqSxzP1o&kIWCSPQm{i)%SGa#HE?2@21u-l?S*=oe39wXE#L2lCCh@9YLhDnA=dd zR~v1tlV^f;NJ?8v6fW5p7}Syf@>Tr{&a85+eYR+6p}C-80JIjx=1R^sDkZHm)>ble;k|ad%n>zXX zRX&sjoNhxqmq^S4DzVZF#_2R=e2E67g5L1#*F0yc;?I^sY>^Aiv`NbS8Ao7iJrYxA ztd5_{ZNk`zgO6gaGN0%82MNS@EzcJ*n-y2W--Kcs4ijsQz26-1IG5bWpGVhd#iF2o z-{=SwlyIM(>4u82soTWEJKVKa9Chxllar^*NyVKVT3A*r3-UewAaNWMSHo8;4PAe* zrdbNCLVIMbeTwT;DDHZHCmsemVu+HQKcA1Xw}x`oLSBoZkFj~=^oKTU&EJPp78OF3 zVohy`+Y!3)4;dYcQ2DO|nD0=81Ui0sJv}{utfY#$s_f=YHa3_QPTrGC-EVjF-MESc z4I$hf6|(t8$bl{O&y$_oy`eS*D}-jg*RzdiLGP!_on%$X-!WsLu5Mt{%e{Xs!sKz5;CH9WQmilMa#BdH?XS16FM2%Je&4?zGAj1$t~?RE;x5C?Zr4=Zxm zPbm`F|4;g#?iV!u->0T);cp)YC*K3;|FUTU1zZzagQRJDGgAeYvi4q7HZO@_Erep> ze`^xxl>=iMR`(Mf$80OuOWd(%sp8cp)R+%^2P091spHZ4DwFN}G2u~@R|>>q8uem( z7s$OgNH2zBPK6RK4^~MS_1pA8bk{T=WT-sxr#a)^j;yj3WbJKa7to}hndN%tdYyE@ z8m%j{a@Url_ot8Yl+UPYq9kAG=0qn*tHfMLkBL8?tacEY-Hkj<-D9v&i1vH!%sxb6 z_oG@{v#?TsfK2?tSz;^wq|sl04mV=fT2~a3fQ0MhN9FEhY>CN&<@O5wH~vQ$W^U>! zekV=>+?HLjbzex1C1TRN(Sl@^@L@Or*1{1S7u=}P)!{MpsrCZP7e%`yIqP)bmdy8E zX46yg0>YEVQ^lN?6a+;ldZc!jW|(MGHsU(cA76RNZkWqZuWE`YkG!TMB5t`gD)Xn> zv?`vdmYviKd_*gA26R++1{Xyp23Mp6Lp54)qmzh0Mog$Z;~2UA(-BYOTZJDGit!Ld zVdScc-Ps_4hwGClk*Q1Bz_7-2?`|Mi%@?j1lbcWhDj$}oo7gDy(M8^{^f;Uv+@~wq zy;Ae-#p~xecUog*Aldnis-AFaEwU)9`B1hr7lGk^D|*@0GID_4tSrj+*p4O1AF31) z5{V-dE$E8Gb4((CIY#Mq=-dX3-paonkWLP2BEKHQNnprDa9Ce{gV)(ZSKIk>Br#Rx zL{M+)4XdiXhkVn!r1wn`RO;CWX`*{2vBk@~lW?qL4Q-82*!cUR;Z{!$ZjIGZ3d(ODrTf(TX}P44+k$;)AhED5&bbdiq&-FoeapWxF3K0IK);UOGb!#nkkxd=Em5~hA9w1yU?x;+#_JLh z(5vuu)cyoVUUaf!=`kVT$67mycTG_*{fIoAM}j4qug^@+^<>$_j}_2reK?ZY-$b6B z_`%8Oz^K*w1)zw%(nI3!6%^n2Cu#{mAKsM=y`3@D^^*Ddx?$V#T+h?`xi~vsQcC=B|5VHcxXXFPvF^h< z4M!*xo#J5yMx?bU6d}j1k6SW^#*G85b_9Dk`gN&PMU_DTs$%mG{_}d_GSRDy`kX|6 z*h%)p*0wrsa9??q#NYL;?+80S0IoYoa|CvvFVw(Utt{N4vhokXOa#&l`BJ;w7tlpMyGRd>( zdi4#8y~c+Q0`zD!MbwP~D(`d9NbO)}9nA98=C}Km_6>%mH8XW7ig2|1(R#t?#=}5B zm2KcirXJEGwujkNpv{DsPpd~{?@#=+`TT)$uQeO0-|O0mG8v!cRcY=Robx7AoA>Kt zaq!-)SsP;k^cm-OyUKnc>AX^#q=I7#*6tk&G!}JBs5owqqsZoC!V=6GQeN+n+DXHe zRe^%FdVy?f0m7uV{0Zjd#+liV`sWH@?T{>F*;h#*zQO9I((K$<&*ZNN2v5Hj1qUMr zIc9tYMrFKFO==`;`e+r~12Q)>W_R#aZWxI)RD&JKei^BSY2MeYo0Xbfj)j*U&eq{= z9Vyr4?^k2MT8FoWVIJQ2Eb#535jCcnlt#k=mYczr$Xv~DcQ+-z8Dm^tXEGEhrzN>$ zb%rV{Dkz^VP`*p#3K336r7B;CBuL_o=F87n=RTx(gsO{AXN~K>%zEAFSqNve9wO1R z8n}e?PyFg{s1)+#sG*Exj*hwS?5HebSs9=6u(q4K``$=FEtqj#Prj&fxAMX@TEAS{A7DGaKnIUBczxkMU(%VJ8B8jnVm zl8I(1nh+Mzxj5G47j$buQ)`b;SIDfs_O#_sS{;F%^-~FpTWfF zpTwL+C8CbQC_3))dQ>$uvp!euUB6UQMj}~+g(P?ou7p2_q;RfY7PN1DW z3t#a;pg9}=Z)p&m(QlS+L-PH+ZV4fDN%9P|WQ@odv3|Wfe!8A^6zb^S;JMpP)rEQ zHm(HroOV=^kO@Rcf=R@dFED&H;U@CfDF%($293ZUtl!wj@;*4}Q_&l4)T1qbS>{%%HMow4nc5-XRN*Z)3RvBN zv>LxZz8L}E>rc{DNn=CtSMK=$_b|4+`izAJs&L)1E3}T`Z5(-?u7W9&`nzS!xCMUB zuLH+OM&;g?YeZ5L%=Mo;|8PrQ6GLt5?F$Dj_HM}69=%n@|{$BT#u% zB0BEd&6eq+>N+kdGF$3|Dvf{923pB-4OL9g!yEx4A*F{T-;+4$*pkD_ zDvNXkV->TvN^bZLzn0Y6^?uiMuvni_*K zxrQudelXg(^2J^{5c66uN?CCKG%*S-{UZ=wi$h!#u`27P##TXlD{1($GC!nJcab)G zDuSU|rd^7GMXo%ISxvu#ax4zhmGE{R*9{=+)22W2{PQzasL{+T7+paOQ4~=`*%Sh8 z1pt>&&3B2~Z|MrGRN3^#$?6Ul^NeduSv#-h;scF$@^FSysvFs_44!0x7-wPNAWt%N zDI9(A0Fw)T)}9nTC47;+zR)3+ai2DqKfgNoKRQ0$87AlJTT0H0UqhIUhASyaqk;e6 zJ^B}Yw)2hJyuaM5dQa@5H|?ry(m%Y!XUWYrSHG^gxJS!*MNO}os9Q%`I^254mPbyE zU}loQaA%M}3<}DPMhNuOJP4#3M8b>Ut{u=|AXR_PWUehIsJcbey@EcO>;Hs1NHUfF z!_q%rq&0PZkV>y$_3jhe%;6*B0Yz3ey~`jw^4&!d=SzKs!nw1ObwNM7KebD>zb=*< z@!;TbeSVeuLK0xJM4LM#`BRue_d3R+iY$|%VebN|4Cp(@vBYgJsb^~=8{V308AX?E z>;eslMPaQTO!TS|NFcR{&{W)ZGEL7uIhG>c&COhfs8>g7f~qdRNQ|C)pv-4X%=*zN zA%@Td29|eNX`7Z2^gX7&W6?a}V1FAFajK#C5q?6lldoS+cDTv=CW7zTsbgOfmUP@= z4FgNB*x$_v6_=n(8VMhSxPcM9vDf5mu#*Y*>fd?c@8M?6gjQy6lq*VXrK>k(guPf{W}GDqFA4Q`u0()rIb zci)aZ5u3x@4|IpRA7!v;I0$)^N!VfvMi6<)1r;z#@%Ok(v<;)e_NN41tp!^BL_)OO ztGJ-eedG4xFUGN z9ivUIUInpM%+aSVP05y5m>hN;3H zgiQ?MPse$Vmp(wL4j}!Z7)G~9`O*ygMG1X3h1LN*iB&!>^cxF6A`r?tnRAYfyD!}i z3)4Ws-;V&^FfU{*uLUbeBlpwdH$DxD4nyfpOft09Aq3K3oxt5tQh6|X5I-LBdl-c= zh-1bik5#aTn@|U8uY3T%8qSK+jE+!3aSxes1QCO!o~jC+9U77vkx4P-HYHKU5%0@T zUNbUs38fptq=qeECknC|dDZZ~D8WKuQZx9;=nNfi$!CW0@IBb|w~7kU6vfxMYdIAs z{3(X7F~YwrJD{2RPhEx$`CUr={GgBJa_Or|LVAUiPQOw3qq*Xvw-j6wW$0ooLz`D$ zbwoQ8mA z$G*Pq&2vvOjv&V!M^CkIUa>K7J~gPb7*A?$T@^MGqhevsA3;n`Q?_4ILG=e~eeC`I z9M(`~f}dc#KOsxID|+Qjc=RC6>ijfpgkQZja{_RTIbc(&bbydov~&RUTP{*lE;V<+ zTkfnKd<={iv4{ScbMiO^=#dtuWcwyKB2nEZrQ2Hn(OA56V+{lKS~DiY4XVkVCPi!x z?dR|J*E)9aK>N=XFHR-S<;ZrVGWHzNU!>UZ!>M3_9vZWt%tMDyIx`$mi?+ck((iwa zb^y;UjGojwj-SFonXV3=(W@#)}<>xU}mF z*v6$6s3>Nd43+bcsby7cQrNipVdbiI zO;@{@Ih=e#;({%R=Pj_CIHl}`8L?x?FkFHS|;4tTj9;&PfED{dl& zNlz{OIE+i>U@1ctCLGs*YA`|wj%;QVm7@Pfb%lD&xa@b zXF^4yEgyGcm-%a-;m41YVz({+PW{pHy%l2OuFst{<}4q*dIPu)?*wpt?^lqWIO zpJ>n(IA8b$YqpY=K74v$Rp2-)+t4rp`4X!Qx;JILT%No?RZo0MhKu9kh$gjp=0Blv zWQEE+J;Ua|1>paYvNOCLA4XQF|8K!I-YGp}ZGRnm(k@HiD+;RWn$a+tVyZM#c`Yqw zwbn+)-OQJvn7d4~lmouF-A@cN8uz{6+uwvb8i=6Zma$#x_v~ZAmYB5DSjrVgOdgga zl2}oiwx;j{JwlE7YXPGhbO09YX~lm2Y(A8;{$#*t@aRGQN08&%h5ocKC2^s@!H1fW zx)^J_ijiPxMiHeJY}11{L8uM&caKX$PaD7cto#+v0Wl`h1E1-&D1U~PGFvV0P^p9U zN^N?yQM)hRNjvLTILOiHb6QO4yEIWb<$6H757s<388S; zrd()^lXbD36|4(8{Bz`OQF>U0#6z4Ie`&g=)6Dm>6te3r2N75sg-S}Rt@>xng54ud z_OT)UH6!kY%PKQL8sI4}7}Mc42=d-utZp(m?eY zGs?Uk$Xsx>yaELLQ{@r$pfD<$^p&TGDR+uKBjWy^4d3t95sz@(2$T<5?fcMvXx-H; zS$Tm$2dRZcS2%5Tw33@j*ao>f2%wE-@YO!vOG`rGZ$TnfMB^Nex!~3M+MZlU!CaiV zK(Blt2)%}`IaRK;FfKvU3qT&;xAJLKMPoFId1z#X%83vHceB57kz2T%)*(aPVoqfLFPxN(x zT{LRrA|&UEz+*tLa5gQ&!VN1?vvB{{y-5TA7`gn6of#mfYx@=C_~wVDD-RVnXvR zPb+U^;KK2Zh)52Ih=7go6NW_!@%>OUU~Pxt>FrkZj0KcT077A*r~GqD)Q{mG0jrP+ znIvGgdSFeya7{UII5@r`5wcH$Vt?}CwkfCaticucz-UA-gjpD1H2(yolP`~c`M^CE ztOBEQG6QR>t|nO{J_P&88$-TKV1c3t*;^s(8jUvLhw95YPk`j#_MVJL#cIX9E*uy? zH!u(cX#u9)7>#fF1%bcWFc^T9z@gkAOfP{D`Ah7=n5g7m7AkK7R0 z21Y3CD+vx|4XO>{U*%rW_9Xz1-T_~gDfLwck-Q3ylmh6>V1Ns3_e9ToQ(IR#zzebV zX^6zZ6|%|$cCpd@pav$(0tMwxSv3mo7E}lB`+(gAgbBeRy;z_)!}ya5)k*dew?Km5 z%%*{D8;1c{aO`eSyxoQbEG+wOu^C+(d=HwFncp>A%Tns&R;u(`Op zA*?~LDSqYM4;r8D0A>KgXMZ&LHk>Oot|PxZ377BL@2cqfNA9P?Xok#7 z)xo@~=BLW-mKGk~ANuZqbd>JNzA5PKLv#QW3QnNY{k@48ndGU8@58jz#10<%?cttx zYe?dq+We?%(D$T@(h%mYiQVOR@6I1g?h~mE4M#Bfc`xAg^Vj|-%kyXY-Im_RRo_P! z?Fg?h34ogNVe|&T3GuS@UoemEJ$>sTRu@KoX-0kclwE*)Z|SxqL9CA7__R#i?goYu zV;YBl%{gN1Or9(XwW?ukOFQ ziC}LPuuvbG9sUZ+Uvt6mU(N%?B<6OYhNliMzBdT4oP6?W8|nl5JuDC`!|ap95Ulul>)5R^1N+l|9ZY_@ ziv-1Y?nXZbr~BtU*Zv-?y;d8KhM*qXCkv73HqbLP9rG_+cKz%g>e+uwzSz@q5cz~A zHs*apyaDGX{3k;8d`KVE7~n#|)qQB+ENjU(k9BSED`$N8@kM(q32p;`%jWvX%=NX! z$8z$J@iWTD9tg@$NBB_VRzLSJ51dmKd_p~OHi79}JKyM!B(3@j-+6wE9qTr~V?5QF z!|KlxM7n{S+l}=bJDb&c(@ovNs_`rjud<>NhrKp~;@GW*Jl2Tkmoo^5Z<~8JcpK_( zFo6sm6nK`g5JN;z$fbb2zpI=yVi}PQjMo&7s;<*DQzS*ujsK|M#A(GvVo*tG!Bn6= zv9(1{SIYgF^>sGCcWjLz&P5lVA!b_nN36Vf`TZCA$$##?!mb(!t4=Q^UsqpQu{%o< zfRm@8Uj00$B=#6ME3|HJi-b6Oj}{{`L+Dq2#pWNd?$^#Dp#s3h&K8#5o5&P_P zi9t?NLS?i8UukN(r9putkJOYjW@*R{^bAPSVvfV3Ljk;tem8bruCD6>wO>)Q&Bv32 zwVUCvY+FKUXexG0VxgNOj&E5>L2-*y`GIRo(!{3mW#kcbj+(OS!rqUy*P}fILNbSA zOu1K<-9DuYgg~eHhVuEZvghJr&&_ed0^CcXqu0Re({+(>as21Sdyikqh|0#X`lXIk zQ1FmzdET096vJ|pv7*s zY|7i?7|1I-{2k1Gl4^0*Vt~NbW1n_;QHi|#E$%y1h6hYW#FO5!@CqK;&p;raBw$*J z@WdZ`@{(;GE4yI_B1piDWki2q#u6|S#!6X}!#$8B$Bd>~h{ZnnK>hMY`i-_w1l_^; z!4Gp8J(@L~Pw2hrTr)2IJF>Sv9M>A7EtNPDa+U^W@IYm~j6-&RQ})oNLtw-Re~>Fy zZvVcy6bHbs*W)WXpzff4>vo_TST&!NEy=jCZhVwHBDz>TJUty%7)U_#7fYVT_^Ye# zd4_^vl)>6aPiP>m(o9_9qQr4En>M8eO*|%wd^z)jJf2d2pm2J~+3kiBma8G~y*`kg zx_Ff05zIfAwdC{qoV!<(;C2x@{mo5N`{L9+&gPso7Ef8aUa<9 z_56bi%FSb-R=W0u*O(x_`aTzkW+TGj^=GYEtE#~3W{1$jWx5M`DRcj{IJMr7uUuYB>~GI*t3Z|j2T>vzgYF3uL41VC7Qlk=)cGLn~3W0AWH)I z1nHSa{iUH(K!_I}=T(#U5fRoC;rqbMfmmbH7ySX}^16)aK#8lUs8V^qT5hA3HFoj7 zv_^@q_~~fu3)QmvL)vnmsv`zz6cD<>+eD7R8QOEp_A}p^o^5?~SH0KoZzMOLdzSNP z*X^PABFHd?hQGy6h@PhOed%*D*Et7{agMr1gS&0z zDp=h^-NvdVwM>YMc&;%I7k#OMuSdHh!maU4?ltX7Nk2 zoe)+s)V@LN?>KB=U5!|G-$d#v$%QtK7qxyMjok2iDT}V_*E)To6rct`usz}o5R(x) zFSpbz<_R@BC6ip=A13SZ5PtR4i2l-WqnjP5(ioF-Dp?M?dWjCLzV5k~)IuGgv_Lg&%u+Ut>z8BdQL6par(?OdSJnBG|6T zbf_ru8bcQv8w@L;u^|!gYLvlB!q9vlWG{_H@+hCRxWJY<%YYAaG#Z37Ded%8$S6RHq{R$umYfvg@pnfJ6< zC9x^<1!It9k~3r;gJdLEP$U`p*R^*joA=<_6Fvk_asJhv zs$yCVYcZsN1VZJB`@}^YWb8={8-3=|uU%8dv88?UAJA*zN?u6IP25!zi%YX7$-0&4 z@i#L=T`yL#z=T2O*y21TPuz)C@^N@3zwQ+WMcD*w@#6)JgLDO|$!bsyT;fX;a;nCr zLzdW0X{_~kgPQ3-Ny#aQ1nbyIA^6b5}eA?0dG+f7X4G4G+Ennm%CIVW(mj& zzm^E{!s1n1{})^D6r~FfH0XBsZrkqNwr$(CZJTe~wr$(CZQHi@`TjZQ%-qafvg*l7 zB`ZlKwUSCTjzYG@E@aXSHD!{u7@D9FxHPp6yky2CIb8t!*B5Vjq$4J;0-3Qspz8P3hGW+mZ^PMUn0kU z*DelFyFRB?3{hPk9Bdn!=clGDkF@2Rf6M@7w*;hW!7kP|Q~r<(;JmE~QiHDR)!aW# z@Ewt&+iYxF(nIbd?_n^{cpngnT&C%lF580*I=+eu{A%bjcrl3h!#2~jGwDo&ku(r- zz^6CvmB7}-7%>d$i0=AdznUx+)8fFN?b`vuDGb+rVw3|9Sm4cPLwr0W{}TOX_d1F3 z??oOVTA%HJCDNXjj_o&K5e-4hWlXqle7!k0)4irSzuyI&@AB0{`?Y$XR`wS`#psVB z7r<4`xALgBRx>!*y>5NSLzqApz)Z8UUh-5TRH_-l9Kofp11SyT`TeRQ#DG*Qson%NwmE?Zs3Rm0d8wV%<0PB( zLb)GAe3q`bTNT|wq7s0g_%cy-UG-|%HyAf-m3;8Uky!KC--dX!=+@9DP^jtGPl-t5 zxoAsO{Oi>@=qw9LZAHHk{t^JPvCD4gHYq9acVpLHyUhBitWA?#j10TM>4J_bolqgp z9HluV(sS0a$6e1`!RqZj;iTO@`UfXiDCbj0q{UauQ}HtF?-y@kn(tZ)n&< zHN=)$^3Xf>A#)QpF;i$4#MHmdpu-%_lTX-;9+#Y9%jV88A-24WCsY70@RUVz12dOQ zt+*#QLI^E{hnIioqeh#=Lu&X07hF-yr>a42{CRul;f0!=q^OXuAvC=s%V%<+sfiS9 z-+*i@ZhlBe+Le*?^!pojv}%Ct2h`2rs*&^4c<&S-P9=Mawi4C#Gufm#o2g>Ow`4js zYdd;jZ%;t`(jpy?pWy(p+O%BjELBhy*m{ZAJqVQZIRZ<0&3pC{W%GDs1ag%}bQJ04z^&{5^6QT$eh}yF{U509xuNd$l0gv z)IIFs5WAv6UVZ8f4%d`xS4`Y&pNW}&^L{+8j$hPF36wW=RWo3^Q#bOy>R@=QFl5QN z(bZHGgMC?p-Xc%iS%x@8lFj)n5;6haSKK+hZ@%}e+1skM)I(^cc9A6vshu~?K8W+4 za^0fL;A*Ky{Z?0ZhK_F${(XK0-!14}6hn4drmUI@SNz9{I~Bl3$@L!XT0c&#Cp3dH z0P(Y&eW>$$Tnq?TEuD5QBgUePjhE_*J@^R(`)?#R`yyoh^A8Q7ql00)`Yu_%RluA6 zca4{d$71JbN;5OcSwZ%=X@7!|L$1|!Nr+v;??&ciwm6$fpg4i^x7e=uX13@8uu?`VL1 z*fyPpc>AWy=yYK|kiz~=5*eG)DypP`n%xpxIYf%tlE+kCV|s&iP1+wd@7H;uPSnQBbDtkg*oeSytBq_Aj=yFn&P|F;jw4F`HOA#H{7Ur$ z8vx=9jrIx{H$)}6&OqsEOarsLwT6RC^FLgsIU?-$ruxw3{ zUl(zw*G1|&CH}ZQQ@`<6!{;<5KHd?Vb^_w0oGfHdjrU_MZb~N1!dKlkXG!%#=hWRw zm%{dI%|X_5xbSRI4jc5yCS(rxWg{F;X{I%@`M{8J2#syy1U{=({@l=pb zU$NU+qJ{^GS#jEOZTk9?PGSE#q0)WN7aTWq9u>>75;hIma=WzEGi9lX&p&gYzW^}* zE%|%wB(oLi-2SADJ#@u^x%w*thx42G-d8raJHbM80r*!6E4BKv7Sf;g3FzO|Y)zMz zxlNamu(n$_oiNEVm?F#375#^D9ti;SG~R#6ImtBaaH5`*t?T(bnuDxg=sEaP#5ln3 zJSP*yu=2~)D^+pGAc63m3wS(pq5#ntp}r`47Q|trXyTPiR)@@!FBWFD$OMm+cLKwI z#~Nfl4@{Ct&$MYzCtEeE!e(@X9q&{nf~SGq`8OfEPiF|}RHwj#-{1!jLx z?ODY6iKA(8M4+&JJAUq6>S+{of7z;vZ;TVg{`H0_J6Ibeg{ji?!pLEd0RfigBD^1oY9kkgXmSEgNx#_P@Y|Dfo`RLp1eveG@yu22kbNW1lzjTf=Ben7W*vgrQt_%dU! zPTx?bF`}smYLdPvSQIwMJ_IOmd2YJx&6+vcsHrJS2e0m9GIL|}Yu|qK&xos5@h|kY z>bh8NG7g<#bn<#~2l-xFc}a(Huoee>I&y|6hRCX-cn5OqE5)u_rqA2_{&duew*3+^#!n_M-FL`e2f%OPh+eTr99>u`h63tz;0k$6XzE@s z^GZjjxcD_IR~s1ovkgzDU1T3a`_89Kc^exONx|bVg|hq5d8@-CcfXHAQM-nQ>EPC* zX!`cVAI3*!#a_>ri7o(vV*J@U#OKnj!dp{;nP>{1a|?2$jetjD&#x!_)P;^QeP(^R zKI-Us3PG3~57oN5P5=zj2&y=Av%I5XX0t@^y>t)lHU-?Q=4kw-)VWU=OM$1NZBcGj zJf}hOzNM&@ioy4{d5>8gnrU~VBi?1k!@$x6Oh_|I!1tzl7CY`C)){w0)&VTaiFj2~ zMmPxZcTyRq*I!?UZ8!u!3$m@AQK zpa=@@fi0@?&IB)+)zpjXa^gfFDKpYjlCf6BlM``okBh&jlKOB3SS_2ppKPwLwvhFo zudzW3I$cUHEPyHl_i4lKd{{I{WJz&d9*R1Q(@YaK6nDF<#QfQi&eb)Qf^^suPGJU> zjq@O;u{mxZ^(ROD(#j}$oLGWOJaNXu`i$au*>K%J&j+rDei?TVFuROA4SmeHC?@Y0 zEQ1|m=uW|n$uEhH4)~%XKPNaEVsQwyt!5dV#N#o)Ab|7|hrNv<+L`dWV(zi2r@`4= zhAp_fEoq|C)b|dNPV$>kYnDv>BkJ>9rPW2B?gc|f@vqDoiFmII9frV)cZ{n3c1E=3 z)`j%f|;{;_C?h_ldb@oKs>KUn{A zc~OpvAXIzfCdsRcPJlk>8a(`A01IjDM=3mq0c9n_GY=W&XiX82{-6+JArkFDxZmD*6WqyO2ZZ+iK#ps>^xbnr3i z6|+kQYTS|~NWF?exg~mArFgb&?q~Zm0!aQ+$Ri0roM<@uHH|9@oPPsi|@PmIa+9=Mw(4JO&>nD}N4iO&+-a33UTU(#Q*|zB|zyQU=+j|l_ zjOtgge3e#v1ttny$dzU99zcLK7H`yYyh|=hDc@+AU-P>t_`^@(O$nQJlFxEj2k_>& zfHQtWo-j41o959^C#$==zeCR>_7LvABjarWnTAMmZjZ4-Gk!-=XtjF6L+fhnY_6aY+Y{sF2J zsY2heP67{HBO=NB643}9bscz||6-ucrTA`pN9h)46WhBD7M@<+sZDMoimt=S?=$N?S@&D7^5P)9pTG{*MIEt{HAu|5t z2VJN2s?l6zc579>7k-#s_2euEO&vohYoPCc$JAki!Wb1|^aq>c5kPUWC6y%ae52^s z>Q%H*PH!yEOS4Eazj$Azwb(r?JrNNlKOS)Z4;n%wtYn+O%<)1gjXz=x2r_psR>K{P zKMuGkRU7QJR8e#nhO1l~g%6->BhQ*JLgT*#OF=Jz7_$JxL*W+DqI45}hCSxocy&CSWsgBwYa z$2XHw)Q`o}Kkg&riQ@2H=tKi9C93hXhM+wbB;deAsyjtfpV^4__lkV;#z_ZGY z3{{aZlO+2cxbRA89X@`534laOi~iSJ;+6I*pl-2oXQ?zQ*wM4YKy|YlGvaAS(^klz za~Mq7#5JeNU_Iicbe*`tH>v#+cMr17DrRLd4iJE)g+WR9^_G*}y@OrPjj>PBI1fOo zr-;?HuM9<#WJIHojth$Yva}0tIq|e%msg&{*&_%~&0r}sud#h4?FNlfy%5}^Wsa~| z!6BMLa^-2I2!2|f9ILcXnm7mLd@k{(r_>}vHb5#09D26oSaO!4UFlKrA-iy3J6(KO z1q?!U9$>BL<+zB$w5?f-1fam~Ag?X-b@M+7(gz*|E^HEM(sMMz7uhU`t7F4XoIMZ2 z^LBk1!=$LPs($mSI(-70;>*ZE%gV0W9DtF*e0A8d?N1fy>U_jpQ9NdicObGW6BAQy zmQ2L@n+9nvQ?V)=N*mz6vZ^ZP9y3Ni1B{mTM%SUqdKFRcYb4|wnsh)~V}2upCKS1A zz=hlz!<{#hN#{>_Zm1biv_D+5sz=q4 zmzsC-H)TRrdP~LkHVFq_A7+x9fe>aC&%e;~nR| zR{}}>S2q+TweORaSo~fI#gStl?A?yVTOG>d0)oyW6t zX0M4UP%zPkGwVhZcW8c~O`6(J_M3?rm2o`&7N<)a%N7MQg|=@s_vq*(-pf}gI0=1; z?Af~4#-0pdsHLNB>Z;QAvW(y=!m$vaq^v$8%oklYggGH)QrT=dpJQAXph)0YD4ke# z85u?>@!dZv+E!*3Cx2tEa^Aq;mAUpo^}N}k+U0QM!_Oe-yf0Eqt95;0?wZ55v@Xx!W44nx zL^`ID%yx@K2d7tL^XRETbOR)I#`Q321{ZFIN{2#_OJZ$R&S9qkUL68r460(( zAd-OT)$h}WuApoJe2%1q>|>_JUB;+av%=~z-%HK;6<2?JR7nmW3DR%2^sFUlL(X@ldn8>)rmP{yHg{j#Nf4yW|D9G%;rY9>)b7WlE}ZQ2gg^1Z-DYTM z=JI{S^XDd0887a4Wb8AWtQL%f&)T`#_)lVN{Ifj@l+u8YEm*D=6O_A`C~;87-}qZB zpHPC27Vw)40E9+P>_(EsR6aUY5%!ggkuMJ0nINHh*uesRps$2OX3v{*`{%CNR*qT7 z*!lW4hI|Ypfa9!8H;%~9B;Vr{xUaI6M(p5tD3xNr$RG{%02%0Zbocw*5zd`_@GdxQ z(|~sjYbU8*klnvfPuPAubXJQ1$~UXB~xb6asKmDz#Vg@xkkEDUmiQ>d99e~ zh?qzUfQs`2={D*OdSWYSMsUKIG6j#mpGg}MO+B}(jkZyZcunZS^4NhlDY|BwM7x`p zZtjJ!%ZH=Z4e2sjgUSoWbOd#2HE9iZVXymuK*_Ya2C6N~&6!m%ZWa3D496pCMq9$C6V0^`KsJxUJn!O|=H>N%Q3P8_E-kGH1n8 z-_MdbK9~tXW<<<=klHO*`NN%||8wZOziih(BMZn7Pl0ZA&uE z)Vrb@$X-J|{B)TSZGlTZ;TpcTiCeq#>`kfyUm}3eLW2IstWArZTmE9(J!iq~5U@xF zVsr23$Uirye~2l~M$VIxb>UWgQ}XH#5U+c`kS(C*9{mzEqyA-e7ltL3B;~BlqS;FG zDom66d@eKRjOe)AqaHqXl`K|_3mr0@*Byb4w0M&Oj>V~4nQrF5d>9y=F%E&#F z_YxL}6tEL0K^cqs29ER-5CH0O0u8G2e|WpE?{eO0Wh*Cj<};2!wH)h2 zda?VuIFvPMz)mTm;D;eM+HeX1Xfa>Kif8XJrcBgbAJrWD89oci4EK8T4MDh9nAAFX z@g*eK!8b%=&>Di3$U9tGVt{s$HVd7}}rwz@c z`5(#C0*wdvAE`A6ohg;}SO$jN1`Y@F{TGCpE$syshM$Y+v@8kVF=mG!CC@r1I5K@rBa4#>%%RH$;+3=_j1IzjSn3xKy7<%_am<8Sj3ias2mqZ*0n+~Q?hytAYkh3kLND#&TQTg5b&|m?4 zfIw>qVRT5COwSM)TmzUO9*12N>`*Y7AWC2rR3T7J(1>J^+(c~>MOFbRNEm~63C{Te z9NgClkbIDP1Z;|V^88Q%C^)5d&|js%(!ihvA*vvreqEu$PuO;1+vN&R9qly^&e2vNV#})0wzKp!a!i5c2GfZ z!wSXNR}f+_U*Pu9`u=V}~BFbX<~ThFKv2B8$->8w_DmAck3SOaY`b!;q8R=WOS2i2h?-$OdGgg@PTm z0P-AB9TtHrM2V^aTlgLeMRQns-~;Fge}awj067UGseIV^{5PaWABbxgH*t)F-{r6H zjOU|&n!iZ0)WC*EJMbzf^ltee08ls!YP$e6Dm^qK@oF9~Qn!3MEqGVNH4Z~J8@^L4 zy<39}HcWJG4T1-)M4%CvV$Xobfe#MuB}KpNqK-YNk93aJI;xoJll zKJu9URbV&nT7fDXW|C&tzhX6lQ8~&S*k_dZ5Aor^o4_sT@h=6Vluoi&fF@8ZpseEp z8p4_AF~oRz-{DA#ico93lulVoP+#;PwH(v#s)kQ&T-jXdzmo~dL!^&Mg^wDse?_Zm zM01+Kh6x^%qx?`7M#IJnFG zWQxy;#(7ZGtcpMLYNeZz0D3KbQ-Mi0N;M>r7rQ-zd1vy&HxW_$r9L`2qe@9Ja1h|3 z$9E?!^kjf7Fa;E=jy&MOT>N95tEHea21!G;il01=<1Mn(NOKKmY4LnBgIG8e3sH{9 zQ_V1RvBx4sjG0$UbDe^JGRH`FQh5U`d1&xSJ)aUbk3T$}Y`Exh08|aU5zNX`W%H82 zC~@8U8eYZ(SV{MB5hcij9x@b_s6MPG=X=7Dnih&h{}h{}O$!IP9I#qu7x>(xt4m1) zoh$jIMMakumT98atf1+XZCCnq=7}6v=)kkHaQtlpjvA23nrviH<`|!qY+t;{TM#Bo zp;_9Ngi_!JPp>>_0JSsQXs0HDJWpeu>yZwc5$wko9R;?P;DRQpJ&HxvzfnbSb(5TN z*U(GZIcDYlA)+O=oSemOtXT2qF42hq7O8(G$}Os9#>YS7SNNViEOk|I(1X+1QCm!W zngS-tTLndty3v8P^CNsS)jWeeG>he#OAX2qMX|LJyhg5KUGKKLLMmtb&*+82^-MIY6S|ptywNlu1*fi=4S?9EqGZIb&iRHoU0N*D zGR@b9jHCXb0{E4^)t~5N*}DJUr;8=3A9h;Vb=JaN78r)i>1FCmLy~ggGfKq|mF>>) zzpa0~eKi_{9W7kvXY0v=zcoD+W6Z^UxjUS!91QFZ9LRs!ztRN6pQAARUt^HckR`ct^e!W{af5rL*zkh2n$s0pJaT~JRxOw~9 zavBD|?z^UEGjX>W77J3G5JPZJJ2ByE$7*228S3Zlf=C%%yN3CCRFE_O6VGj^%tqTc z_<6C9lhv?sQ%tjQeaGl+pue$qjq^48t1dVC4>(Y2CMS59#9mHG z!Xz?}0=cJ^`bC#|*XRB7_zpw^c(MvPpid^5Y5|bMuXGCd1#s|M`9b@aN(Q`H0%;!RXsA#oDy%%5^jwaZo__- zmUQdST~yaC<}&Y4Y9uhno32{c4rG(xfbF%k}?$4w>o3gs`ry z9+;i9@KcH_Hb{`R^g|EZN#6WCGUTSL0n&!r1LYPAJ=pN&gDTYa;1V;QDs!e*9yfc6 zy`tn+zK)NNcdmG&OVB0?DvuRjHH9o?tqdseh7k+*2j)A*O>=nU>GT^l>Dm)~-cBsF z512T(ZK1?5?Dg-A8#uYOQnFH8K?zsXR>)Ms-6UtdtdxwD)RWlesG6`Nn#c?@0R(ma ztr3;i&D3~*d;2(knG3!AdZE=LSmh6nBp@UG}cymKv-A0Kq*1I za)(}!rPL>NsB~1-8~+ZfiCPqXFm#3%y0GRZTW_*&SbBduIDU^|*^!w8szuPH1nMyx zKdDne=J3X0IOE1qZUA{ASS>0=cR%)(bw|A{HP0O4By?uaZ=$;;~I2S2m zpALg4md$GC^Hp{oIB-mC1owzsxX?AzuAK74dt@nWHdNCUtz(+4_9KfI0A@?fxtY?d zVAO~Te(KW2D(~peyx;?UtTuR@{WKXA7 z9$v*%)`Pg>;nRqGuA63Wz?eC{oc=!-H;+%TdjqxNz_$^Y6g_Yz(fLMnMm`qyocm(G zEtXa-y|{E!cw5bNOL^a~uZ`a>{-hACx^?|vVHnYV_c9KR@_&XfY1esuv9+UXK?`sa z_&&cnLO!}FONYcP*Uq8udYUm8WunmnJz-OtJR^eRD?Pu>!_-l800Er%(l$;T9|jx2Uav+UACX;6zpIIrK#!$?Z@7JXUNbGk ze;VPJogbfAhXo(i03*S?kav-?mFEOko_FT+rQQvDYmyOS$O$f?M=TbtZbiL$OF}bM zi*u4oij7ve$}YJZoN2Ha^uhGCqV;9QO`ybA-`zluH;HwY$xQ1%MC|kBt_ZF93ql0c zEA!*4go<F&1s}d0}CHm=HVsizGRdsp_61;dsc*o2XfadjX+H({1KNS@!e@b)^ zD^?`#?%ma_8;-OTrd$=L!pJLJ7yBs7=FMa9>#eT_K0v*j-_5*q{%!4JW0!_YB(zGl z4^5aaJPMW8f`JZC<*^~}FJZX7cbfc8pIu;S94Nbo?N!+m4x5m%F}u_GewswcXF>UN z&V&Rv3!@YI0`$Y~nu_O|BlhdKAIo-x!sXJB=wT1bWb47mpUfL!_s;ipB%srYf~R=~ z0{28uJoY!l2s#PTFP%W;y|Mh51;15TjhG8Al*SmWBNq9Z7)^pm2QOqiuq7YrE6SHE zM%Mx&@)K}R1Wa5-HhI`lNmb+|1t|pK2m?(ruXzn$0BnW05l+ROY%zz zW;lwW>l%rYa>{&N5+OFZa=aU%g)ARZ(y}7xwG&i1Q+4xhI8`j3Vo8jdL<&h!PIrO9 zJ3=bA0Of}@4NX^Jx6`cF_bVErPEFFxLJG*oBy5sKMzJIc;lUZTLYj!eMRS@6r$|Wb zi`JlK(GyycbOE&x9wR92EOwdil@0VlniUmlr-G(qEa|VP6c@<{TakrZlL^t($#_x> zP3j29t?)wG2`?iVC~He@x8^>Mg&C?1#1j#8zzHOsIOR1386MVk=gpw4Vlxc4aA7$c z2eh2HigVt^D#iwBXy8*(#&5XwOtk|`5MfZL0} z13Jxw3(wn`ls%o)vGQiT)Ohqy$7IME|r9ydQwsJc6C|s z5Fz(TucS30r4L4uKYo@piwYjBy`;T$){b~evBE8waOZ6#Pw@PWwbk@j-np zt~zv5L3XZ9NL5+u1za_vmZ>E22>oskfNwT50J$;7{VKGnv-uFq`+LZhYr4^?#gh&< zHF&1(zCjnyDcxwfGMOa#!TLMc<)@yfF0FO*`1E*Eg~toQP1iSbcsGjS!TAXe3V2-(zs&Pn^~uA>!XWeop#SuaAmE}GpOD_2!lx9$p6=Qz{2)F zv2@AOyhLE&fmzZN#Xuf-C+7*8<%0#5DGgE1i+7i|IpYKhJjGOIYP0fJkwPl8O&pwo(#aa zrVPHYj$>dC$G6WDgf2#s02Q_pA&M&MD5}tx*Q$&YQPi=V6B%f3wg- z3#cf=3kIklujUH?K#1Uv2|(Zk1BU0t6$qd#AfZVv6fnRN)dqmk)t5;mWN4S9B^(*( zfOEVc@)qIcppOS3%(EpWAuxiWHJC_)&jSA_ASxJw>q~0T5OY_WF8>_HjzAl2H?*^5 zv(nfh2H?cmKOi)Vkq}Wm7F2Lh5W~@3Nbt}dh>Z3EQ^9)yJRc~$b<8P?##t!x{TPl1 z8UqQR5UUKs6!8OJ2iz@USc{@4&lI8IvC%QE)2p9_QY^@cFnLucHNJ0okI$x!i+~u2 zt*+I>gLOlGhW2ZW|0#?eMvfx=Hmh2|3br)$LcXl23~9rSJ9oxbs%PH!%3&`}&Bh1H{U_@cf*- zIf9qoHTC^`@dJHIYde=_G^xySteH;|0Us5j%Wj@lIj21G7v6G+ZBroL$F@C_Ng5_EN11ZDh$b1TS)D#iKdOx$yG=FHH z!Y-F=;@$QLTvrgb-eVhH%@!JC+=3FFf=5DA+%;}C!VtR6@E!Wr4WT%z^QkwN>wVPC zo<{)Gm6aL2Eq8@i&bXmifH+mz8!BxYb=C2z%uUw2`sE5;;+Cq48rLXNcxokWS=*h; znz^jG8K(iJ8`G*DjvLlRJsIzh{2w&D3fj_En>V%(-TAyAUdvvHuU#U19)Xd}L22c4 zPYm_gNmJ`TOKh7h0Yz-}EdgH9uA<^H)4qU|*0%KPO@iB84$IudhgGCy8f}cJT*=ww zgp-PlI=a&?u`bJe3+(Ag*M>v1sTRUxQ?=?SGRTYu_OCo>l_6ZtR)Gf4gy*uxn0RC@7&VQfF02IZHj&upd{?MVjUR2BoL zFq>|~e8RrjM8j%IXPh#c?%hU^DSd3zc&OAh6d$o<_sreVYt{zWm~J#}xXw7XQdgt(WQf&Slfu>oM zE;(hiXzk*~6d|K!7X-R`(@wpLhR4`pKSP|^mWf&x!F(b4v~A^`l=>CQuT-i#xtL2? zXT-Dm6AD?q<)~gw-6^tQv|#ETHdX8O&*i_itkBE5d*(D7{Y*;t0d8s3XUq3(ekO6n z^Khjj3uQmE-N54Xi*pUGp?lMH!Spk31E&(1HKP*k7i64DuN8YHw320edJqF^`r8Yg3XlrOLST}kE}|1 zvYsonsaL||(lrQLts3%G?V5BNrFG4CspUhFp~5n@ANj9nIfWL=+KaVI8x=d-@>NNv z-p)HU?d)lElpC3i9IyW=AMKMk(~#kba}#-14repsylbckaMvKL`@kKH`l{2YEy1;A z^+w-63Gp5A;(-zTFzLmnC~5AoK*9P^3JR- zHD7Nz_%`+cGCZPgv82{76 zD|Yq2YBFu}SKTyZ@zm;}DpZFKY1JGxCnMxPJ@d}S?V7fL9#bSBGnTG%MY7R)s|SdsN)J$A5|BT#xfIlCfqPIe>s zc%Bk904Cl~PW<+}BQzSTw3=o^KL`|}b&DqSFU>qeGz+splBX=+_z?^phyRz5Tx^Ui zX%EscM8F(rs4_6*G|Y^g44f>?%q+AFEaVIfxPt)DsoX(k3mjJP+eM=VuAlJyCyc2ma5S5&Y5Jy)sst_kXKtE)$F%djm zaFW>4Un9uF(tq7zy(Fb7cm-Qr-~@Jjv9mVV9bR03+6o&O->A+}yNEW{U!wzCyxzd- z15%7aW0C6n2=&Gl(*K-C2()xFUlG&_sM9}#C$`^Vk|4*jQj8mr3=YjYih`FuyMk?k z86;NxpSD(s;G;@H3wrvLlHmfyR`YC|fgLHrSZaX>)8%dfq$YIBp`;xu$KD+v}p;QpmDeIS^Q0L?ir(H zOj`=~Y)ok#!J7cwPSxP9xOnRoR3*)DHtH81`-sF0qSV!8Rsm)5lRGq z0!5btW#GR>Yp^%r^y+GgZ}#03*`e_u{UCDxh9MFN6~6V?Fbw;L5{e`%Ebc1|D8Oun z5=!if4+*gp29|gCQ?HF}vuXm6w(tC_-O!@K1khAKyg(YRm=fa8aKecN{RVPVU z;-gla5fKB@N$EYEf^7aClb&`HrK8m)DF@R(MRrNsA(FF)m*CVR=CTZYavYWH48~WR zF%+x82xqp8C*2J%x=Tu+Y6eov*_Gc|wdG~i(hbzeht_35xYO^ilFDA1cwGGa>8?MX z@kD!0+|BX0fbgVsDncjKyBwBI_FS-AwQk|wQ0D@C<-4OB(q(!Ikgy61h&(w8oTo^b z%MoQYj^{g25)^ZH4179)ilf~KiLUaOkAJ2m>2D?ht|$33uf!Ola=0ZpTar2FPOu9j|rEO-61wgj|rV0<6q7FMOM-jO-|{I zc5MK36H2?SZ94^@Z|-p;qG-)kz1}qR`BBV{i#h@rmPaB3BoZ~fLwE@i%NVMN|F|Kq z?Y|;C4;SyO4GY1&IQnVt&^h2*Fw2ldxpEUga?PP7vq;qS4U*bZWk4)i2)6do2ViMt zv2!`IDRVuu8MWpY9wP~UglT9_GNbCVr_cbPi;V_^mYMDB9Ilor2A$27j@Xqja&WS; zWP0%isC$MREP3y{i8k zXX%MsBAT;AoWP8B6q&I|mUFqIBo<-iR)wJ4#Oo|@6G&jlha zKGICF>`Y=UV!6F~B!jXU>PWJMl4!PbsTmH~!sm%iaK+EyDHayfBur7|)kOkud#4~A zs-jXAv6up0Nly?ftW3guNnCWL8A8b9)Hcn*cnl_C*X7j9@{(;C(M_XiD>guVNxCed z%|wnQ=19?@Ks{35na*pDr||G7y_=Pb%`FcrpXRrX3m6q~lY*eln*QHWvvjkKwiN;ZvxcGu9 z{m?CcJ&%m&mKVWOBj-u9;i$9YxABcaqF(DkW1QC#cQb?&m}^am8rq@wFdAATLb(}f zYzq(cCX}FA869X(5XAxQB_xvpM9whDv=|Zn@6m%=e?L5=h->|F zH(%3Lax-7go#ko0)ez%pYfT@!iOj`Tcw3$sF?=k}kAksxAa?=WR((goEa+Gw$I($4 z<5T~ZEB*N4*^RxuxBRxKHe{v56n7WV~**cJ2Rpy z%L_7TTfMw4VNp^|foaD4zP(^>S^c(qxA6VguMV5~vBuu=+C)iZHwVnf{JgK)`v}qt zRL(L0v6pOPGbli*2itY6x5>O+QLnMPK!~DXED4$4M$3{TN&7bacwtfm)8qDZZ}pfaGV>pw65$82j1Io*K3q+_u6Icc1^GA-E-r9eZ1x7 z4p&UZX~Gd}$jF!thQLk;RvGg6nLT2rg1|fx!_t~%hxeZP0!0PRt?RB|e-{%QhdDHB z=PX0m({(jw=)QGB1~iIbVz$g5GvtWxl*pa5ad~Aih=BV_sWcuT5HW3@l2Iikc9(5j)hV~V*@|B@Jz%0*zt!{w^rsV2i!U{h(iwg zN;FB|tMI#KrAMY_iEgvw{#jH0Eb#-Onk?OtZvqIom9=Z3;-vpAeP}1#QPpjf1$ylt z4dg^Gu5cIEd zjWcM_7%i}~`_)**&w&gxrZM+$KtAg<2&@a7z%nJ%T#3+d(8FcB;ai@cqb zXyt9B3Ho|&+qUzRo=0*0dwx}qd~P77n+uyk%4n1M*SY7?^@ok!uH%R|-Ms6jb)U#D zkcqoW|EAyRhU~A^H*QR@^5*>m5C4w?egz=fG6ih`B%Ha6`8$Dz3p|d7$AZ)vk+nxV zCwAxTwHCksCo`x^L@Fj&?&`?FH@cj3ZT@4fY4gb~{jk9Pl4RfR-MFAMRnuKZDCurG z#sP9;8y}s)Jl#*Ee1RT-&o`PqsOA5YOie4|_ya!Euc<`9Y1+wt7H&oxd~p8V(FOR& z(M-H?CEJAsq2r<{`c7s;YL=0rCk$!4a&XpF7bc5yIUa_z7`4@0Dt9%+NBUju;EeND z`eV-_ocor?=V}a5Ccx31pN+hxpsP-c!Z#Yt`BKVnv!CX+1~)cT*>*${nA-Ml*}VYW z6k`<9QY@vQwB#$iC>}U6FRmx#kO2_d`|Q-sIhr)?@Zr}6;q9C*zE-H@^94O-+ht{5 z6S2M5hQeWk@y$H&|5Re0;c$N4{x=vSL??Rh-RO1nAS2PD_YnyqI?=}H#;A!d#Ap*G zVGuzCgF*BzqC^YPOM)bX9KZaY^PKXW|NmU)&Dx*!-D~arVqN!j@3oYY*ke~2Ef3D& z2^117f;-IZB+hTtVtz*`4vo->dHS&O`pX+M`phuQNqE!sNzKughw!%q;x9DikMbBc7!k-8eZRfp9EDv|NVFN(u)Qf)LEB)*N{$kmLEC-6xbC-RFoC>PKd8 z#TNqS!@`>x{bSl1D%{7XJK$ahNn_ufN6&dr7ph**t*V1$na7)XhP}!Sq-9QfZU=D+ zNByD`lPUGxbFdd@HnMA*^FDV+rI?)ls()XKRk-%Mr6V5x)LZeGA%qEU2|A_-VbkX* z_-W{Vc|j_ZDhb-8`=%(Rid988t^CYr_yI@uGqcW&Vk6>Dl16{=sf)kx9!)w}{~~EY z=km8K&$v_EeQhhj!A)-=ANSE5#q*kTGU~nI)E!MX7 z`LEE;T#k>wsT`S8?U?_^CSES5(TI6hSN0#S4wtR!&6_e>I#QZiH+2-G!3w&viVCvY+A<1YMR^?= z>6`NM5U&3vg!(GR{+~^|ybL&lMnpI#&7K^Hu!Z-1Z!%J+Rq>_m%Tr8cpYPvT!5b7L z?5Xblc!KxcolRs{p%M%lctu_ng3^+#MM24B#L{k{$jn8J#|d;-12uJDdsbUOTZ}ED zHMzLmG|`WMnFA{9WR|7#7vbMV_533q+<&|g-tlE9Z%HXphv(=iKke`}D4)8u_I-gT z2tz)W>rdVi!O;OFq{L83UZg+_^d<(rb(;AOqCNoeoOqr17EO1e|vo z_>i%I+@YS2Ok_@u-kodiNoHgbp{Wqb(ahLP!?GC)Pe3aUG6ouna+U&Ybe6K*62>u< zv*Q2-b}RtPPKy0yStf!9IBOru0#J+->Gc@$Wu9hYi5MCwvYJS+6r});ubHeSYR8Fe zbM!^$Z7HJro#IlUjm}3tAhAeYA4ah#S0AbcP#Vq!OU4mRm+b~GWH|>=A>gcH(Q^!2 zUPLKqih!65bdbZG8l}hgg4Aak!%BH6_kF0@0AFy|o2fh=rwhN(AX@(XRe~$wRg|C{ z@q)32;I*fbUeslPcB(^o_{e^ zn5Xh3Y<+NG9}YXhW(o8pFyJkkYHT{1E)v2t1|m9hid-iW<6J&P57NHS3;h1eb%iAt zNRCEq6nh3!PKD>&vJlG+eksvLZ>+vupHutrQ!ed;3X`IuUac!vb=BUMUME)_2aGn3 zgW)>e4!=O-rfsJ#tS`~vW~jAK-Yf%bBIojkTQC!^z{*xgCsUm-%#Ro@mCGd$HMA&J zAhAqbncs>Ox?C>~Mr!v%#)B_~R1?)*)J30fC|kM2r&bJF*{l z{5kS@({nz72a_*ifG}ZLy=t3EGgR!hAv`LALyT_zmSJHm2j_y|jE-U37eKK7%dFhD z(_~JHb_ZOT%icrkm$YUo(BL!I!&s}^ug-?&o~Tu|y}KEazN{Z}02G-K5&(4Xobe&* z%u(*?+&9-eA(&jC5-crIt;7nn%?uC54Ktu9&`+4Cnt!IR-oR%41(7g1H-R@9vvAZr zE(jKuxL7(%D7(4ioGrXh{7(5+3_e@vP4pr@9=TXPOL9uh%Kt`x91xc1+%*hD?L{^j zZ?V*=(5v7gV3T++vt43)ycdG@*^6L;F?IPbiravIm|05My6 za7L+12gQ|0-5lbUzh#0@m(on;b}`G@ z8m*;O(cP8ST~w@n;iZ;+X_^)qGs_NR6t431`YK_zwiz^C(11Tnq%g}Q@W*42TPFO> zlHJXDvs}9UZ5l6Aa`O!=TA+rbL8&F4Zww7bF#_4TCshkKcdzSyJm;?4!DJ$P-gfqA+Bo_OWpQ&H*Nk&{yaQ!lunifiVT_h7gtG{pVaW zx^;8`G?P*;`D&|hZDvNCb(_#iVjf_%eW0SrckJh<`;74^LC zRlN{=m^y=D2yuL3f2@j-0|DdJ`gE6e%uct^U!{je>ej9pxE~Horcu#*nYXHV^+9PF zTI3O1Cb~0yx^=|Te8*6`(o-JjMQz3^Yg#~}koWdbw^2ChEBAP@Qi=oJ3B7le66|Zz zt{RmW-P&SvUTHAMO{A<-+uns{fgjVJg(z+&&MjwAPhyzi0~H0;yJpB+Gg=M9BeHQ_Txg?p{+iqFkQ2!@lkTp5Pr2ElY*+JYcN_v92F#MR)s-;UW3T~8lt4{D3<^`7U$ku^D1MZ0xg$Si zm~6_>n8jjJB4)KJu0DZ~YQM`@F_k0!nS1yeod#Wta^$=ymDte;-B}1C#AVv^@OvOf zM(YU)F4L><=UnIvEn>RX2IH|K9(ir<><*6J6aI`JB3Ega3xD;krG2E}Vd1su&}aP5 z)6C~7bB$kd5`Z+RHec%;g(;V_vJr;(FtGvKvV&LXl-EhA;L)WS8hU+VM;AGjr}S69 zPyikJB)>{M=x!KG0e}(Fna&^a(?V{Q29?t()J)imQ{-C1M)cEmTw)^P#PDZU=M?Giv?*e3tD*QT7aZe(MN`J>wsqfAXg6<6F$CbweGvFdCt7DR4^D@mRmK*iA-70vwxz??)hh^Bprnr5;IO@XSQ|kL z^u4_nYQop&I-7LZ8YqARA~f#Ae^2ZrudP&%!Ofuy#DBqmmaQ+EMKbhBy~IpP``R!R zX{R+e0c=Q9Ek(>h7iuEnbnd#-qP^W0cIk{*X*8i`_Z>r%P^32ba_4=H)yVh!W#Yrn z;A`2i3Y)5}(?Z8eMovN^H$ zQOaWkZ=#bwCLK%&pP-pNLE=t=Zon|j4E_d0Sw>S7g58O6mf|#ua_rh$4N14A`E z^%u(o?_*-Jch6pnP)6}CGjY*O!wHXL06w!%)t)K;6fzbuVfcb$hCUytJ{4mk{30IW zYfz_&mdtjBI{YqyF-Epq)kH$G?G`X(@VewkU#V*~QDA5d-2BC6w~nKjS)_N${!Vtd zu0`V{BJ!j2(RID>zY5gd)-$GY`5^`VaJ$1kXb+?zc6A9vhh z_>LnBzHYp9n{XO}{hV-VrDufW#d=h--YcE(BFW`fZ+i)2DI<8}Qx^w?jSbs;{Rt?H zhAxCYkC6`?U*HFCdez-K>Ifv`@T)^5G26XdMabKJjVr3U;oaQa-=i-ftoH%XD*m(0 zy|5niny6rHzwxutekGwo3se6dAh&nXyWdgYn9;u_cd$oE!ppBNEeUQXo$uAe-~D^C zAJpj_>2Ie5nrwan;P5+%Y{sj(R^lgZRj7=|ru)N*TZ7-T*WWG73_40rO0Y9rTV?$I z6j7evQEUV8w@?1OD#gfqbfRs@Xg)tqUK5dcJP)@fN$B` zJ0`#-YTd=pJUCei$07*{U*FWEgash9P;?UoBB*Vt);R4H0lPat?lHCegbR@_PJ%D= zWuHAZyIzgY6}XQ^f^QeRp6Z&k>CIt6B=iIeeIh)B+C8XD*!Bi{p^l)*jxaWwwH&5$ zm)@M<*7D~q6&b!}$#7VFGE<9-7`010(~3)M+PwHl)eZZo_h1eb`1Z>z2I7=))qSF5 z5%4GEx9rf2e7^hPiAOiD(st=&4)MXfy{zEdY%b}|8!3-Drd?-w?x!c#=_VtnR-ptf zE<@C%5#b}I2Vt6)PEl40u?a9kI++zWulEMn;_5_IS7Ah&2eTv0 zlV;Rvn|ud#1a_RF0Hg5(PRlt~A>{lb8)7HZUjn5g60<6BB7bs{|B9Ar$3wHv&cXtL z_mRxOuyu|J4Fh7t&7x-c_rxIm5N{#C6YQ~H5^6xWOzfnn!vsv8X~va^tpmzN6{3Mt zzrGG?77j&sktD{YSd5YU__VZ4gou$mqkya^1X+okaoUdq^w~Y#*1G^UiL4t)?{f;s zhC(Po(IIQdnETe<>WIkNwGvn#&Kat3(IS!>6MvPSHq;#2#2}I{aYX|&5utUN+xqPG9Y3oycgg0?=)Xp+V^RqjoLfy zL|!qiPRv4EuidtaO$zIYe`HEHEbCWd7@%nvsU9Y8lhNyZ=?f3D+m%XtQes_G`;@DQ ztfA^5DJX=SgN0Vbr-@nzbHk7#0jT;p14GtV&2RNjmBq6o_U-d$$1Gg=12gN~8v<5r z-x7)s4$KPaPC9Q6nrlk3G=dp8xM|VuwKe>qD(D89&Brj(XZr2 zWJ*j;)yh|ERdS0NzbBNH6rzYdj1$1!x(_HPm*af*17aUP0UR=(1-`MB&oc#XGX_O2 z5}c5SX{fk0?q{zP@oM3g9zQ-&bTQeqX2n0n}bjc1?)DkkMk|$O)b?#EYx^d{Bi00c9oa z>UI~fu=n=HEVM1;8QE=*9mQ+DQMaRY)?T|hp32)7FRZW+wx4Zv2tTSQSXLWscQ>sA zX()BdX$VN^j8PwH;mJ)z%RXvfJDIIVbj5P9J{=|x%p@jd;c>Hi@bLihN@I{3!K_V8 zF)pO@DqVM*x>0M2>?(sQ{&*TYUe9Uqfpn|7cp_@x_ajgRXNfD)iyOM=tgs2xrzx>O za&UXZ1@vPV>p9gcIQNLGxbWAxyAqIWCEo7|HGH4)>QK_isycrheW&%I{wYU^w?2ug z&U8B43O<;z?Wj<*guG?t7-_enWR0)E8GRz}h5$6QaJ zXc9Y@J02D{fZj|>kK)1K=H?*VI^`zPXzmSBR&sAi>6kH5b0fCJS&Siw^E>6S?5_#R zJs%U&HbP&aDbmyI=g2+0&W^&42PxeM?)l{Wc^>?ks)TlG;@YFjRTZzNM!KLkkdA7# zju5g_qDPf)2gZGUt{w?yf952eAyUL=V&@Yj5!-xNet!Cfu6l&a-~(d#B70Vv&e7nxe$s ziZ$oaNj-#40i|yLM;;U3Hqj5RE)Wd_Ii}Eco#sALN;`JpNqD1YOU~YS#lkg8tC91U zHbfmdiab|0v^ww<&`}V1(l}>r(&D(DoZ^!SU(%)k{u111myx6=h|(P=GOqA|DL-$v znMZCvwHg};PI%d9hKa7z7DvSLmgxF0I>oy&qa$L^Xtwn#IE()Sj$;`zh^5krh0{rx z(}7CHplwZ}zpMI>qDHbi3C;p-I=#k7P6bue(rSkVJjfG zSmsj%-XXGf?e+7%Sc+YToSCRy5?oa;+J9MlIR1rX>o z_o1)@nQ5rJ!2G{wUQ{@3EFni!pA*ANfb4@3hcBfqX&aFIbGQA{7Q{d4AHZ9m_8!7> zj@eOh%mv0(0qy~*|{@!rwLzrxoKuw=_v zo*isbr*qr_xAzYAW4ATI%ORC_qwF)E*n`3qKi?}jkEBqdoUdcESSi%I!VwWGBGQ9# zK8~(1(gW^y35S0G@lX2yKwSr3+nuUhE%VfPj`zz(9cI6dVq80zYDF#fJN2jk4r3oO z+IM|@l*PVl=^7<2aQKC7?iAN1v~!$=ns&&Cob5jdlui|z*`;f&M4llyw!TE zRZK7wzMHEjR*vJWU4Xs041t8An#=x+vH9taU4V9syQWwud>>Vwg9VOWTIkun+Sl$2 zoVpiS4Fnuxaxasz6y66Ix`o{L+*>i_+*vZl_Gxj}f{Ls>t+Y7mXv`x1hxrJLh z71JybrK-}!nZt5DWsinl{G{VYmz2U2<*q>8SB(hwC89mMDF{73zHv|6_TI*;qlFJ1 zkEFDs%i62d8km|+Y|87!Wt)p Fu(')g(op)s(erators)g(sort)g -(lexicographically)j(using)d(the)630 988 y(curren)m(t)30 -b(lo)s(cale.)630 1129 y(When)22 b(the)h(`)p Ft(==)p Fu(')f(and)g(`)p +(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 1238 y(is)31 b(considered)g(a)h +(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 1348 y(Section)d(3.5.8.1)h([P)m(attern)f -(Matc)m(hing],)h(page)f(32,)g(as)f(if)g(the)g Ft(extglob)d -Fu(shell)j(option)g(w)m(ere)630 1457 y(enabled.)46 b(The)31 +(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 -1567 y(\(see)42 b(the)f(description)g(of)h Ft(shopt)d +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(65\))630 1677 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 -1786 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 1896 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 2005 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 2146 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 2256 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 -2365 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 2475 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 2585 y(regular)e(expression)g(is)h -(syn)m(tactically)i(incorrect,)f(the)e(conditional)i(expression's)e -(return)630 2694 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 2804 y(Section)32 b(4.3.2)g([The)f(Shopt)f -(Builtin],)i(page)g(65\))g(is)f(enabled,)g(the)g(matc)m(h)h(is)e(p)s -(erformed)630 2913 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 3023 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 3133 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 3242 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 3352 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 3461 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 3571 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 3680 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 3790 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 3900 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 4041 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 4150 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 -4260 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 4401 y Ft([[)47 b($line)g(=~)g([[:space:]]*?\(a\)b)c(]])630 -4542 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 4651 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 -4792 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 4902 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 -5011 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 -5121 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 -5230 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 5340 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:)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)870 299 -y Ft(pattern='[[:space:]]*?\(a)o(\)b')870 408 y([[)47 -b($line)g(=~)g($pattern)e(]])630 543 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 652 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 762 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 -872 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 -981 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-)630 -1091 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 -1200 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 -1310 y Fl(not)40 b Fu(equiv)-5 b(alen)m(t:)870 1444 y -Ft(pattern='\\.')870 1663 y([[)47 b(.)h(=~)f($pattern)e(]])870 -1773 y([[)i(.)h(=~)f(\\.)g(]])870 1992 y([[)g(.)h(=~)f("$pattern")e(]]) -870 2102 y([[)i(.)h(=~)f('\\.')f(]])630 2236 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 -2346 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 2455 y(\014rst)31 b(t)m(w)m(o)h(examples,)h(the)e +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 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 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 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-)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 2565 y(literal)f(`)p Ft(.)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 -2675 y(`)p Ft(.)p Fu(',)g(sa)m(y)g(`)p Ft(a)p Fu(',)g(the)f(pattern)g +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 2784 y(loses)i(its)g(sp)s(ecial)g +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 -2919 y(Expressions)23 b(ma)m(y)h(b)s(e)e(com)m(bined)i(using)f(the)h +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 -3028 y(order)30 b(of)g(precedence:)630 3187 y Ft(\()g -Fj(expression)e Ft(\))1110 3297 y Fu(Returns)i(the)h(v)-5 +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 3406 y(normal)e(precedence)h(of) -g(op)s(erators.)630 3566 y Ft(!)f Fj(expression)1110 -3675 y Fu(T)-8 b(rue)30 b(if)g Fr(expression)g Fu(is)h(false.)630 -3834 y Fj(expression1)c Ft(&&)j Fj(expression2)1110 3944 +(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 -4103 y Fj(expression1)c Ft(||)j Fj(expression2)1110 4213 +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 -4372 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 4481 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 4680 y Fk(3.2.4.3)63 -b(Grouping)43 b(Commands)150 4827 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 4937 +(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 5046 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 5206 y Ft(\(\))870 5340 y(\()47 b Fj(list)g Ft(\))p +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)630 299 -y(Placing)30 b(a)f(list)g(of)g(commands)f(b)s(et)m(w)m(een)i(paren)m +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 -408 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(38\),)630 518 +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 628 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 737 y(subshell)g(completes.)150 905 -y Ft({})870 1044 y({)47 b Fj(list)p Ft(;)g(})630 1183 +(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 -1292 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 1402 y(follo)m(wing)32 b Fr(list)h Fu(is)d(required.)275 -1574 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 -1683 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 1793 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 1903 +(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 2012 y(from)30 b(the)g Fr(list)j Fu(b)m(y)e(whitespace.) -275 2155 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 2363 y Fk(3.2.5)63 b(Copro)s(cesses)150 2510 +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 2619 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 2729 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 2838 y(copro)s(cess.)275 -2981 y(The)c(format)i(for)f(a)h(copro)s(cess)g(is:)390 -3124 y Ft(coproc)46 b([)p Fj(NAME)p Ft(])g Fj(command)g -Ft([)p Fj(redirections)p Ft(])150 3267 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 -3377 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 3486 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 -3596 y(command.)275 3739 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 3849 y([Arra)m(ys],)32 +b(ariable)44 b(\(see)g(Section)g(6.7)150 4103 y([Arra)m(ys],)32 b(page)g(93\))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 -3958 y(of)39 b Fr(command)j Fu(is)d(connected)g(via)g(a)g(pip)s(e)f(to) +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 4068 y(\014le)i(descriptor)h(is)f(assigned)h(to)g +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 4177 y(a)h(pip)s(e)f(to)i(a)f +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 4287 y +(\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 4397 y(Section)45 b(3.6)h([Redirections],)k(page) -45 b(33\).)84 b(The)44 b(\014le)h(descriptors)f(can)h(b)s(e)f(utilized) -h(as)g(argumen)m(ts)150 4506 y(to)d(shell)g(commands)f(and)g +(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 4616 y(created)27 b(to)g(execute)g +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 4725 -y(in)30 b(subshells.)275 4868 y(The)d(pro)s(cess)h(ID)h(of)f(the)h +(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 4978 -y(the)k(v)-5 b(ariable)33 b Ft(NAME)p 850 4978 28 4 v +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 5087 -y(to)e(terminate.)275 5230 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 5340 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(.)p eop end +(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)150 299 -y Fk(3.2.6)63 b(GNU)41 b(P)m(arallel)150 446 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 -555 y(a)e(to)s(ol)g(to)g(do)f(just)g(that.)275 685 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 795 -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 904 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 1014 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 1123 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 -1233 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 1363 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 -1472 y(should)d(pro)m(vide)i(a)g(brief)e(in)m(tro)s(duction)i(to)g(its) -g(use.)275 1602 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 1711 y(and)30 b(its)h(sub)s -(directories:)390 1841 y Ft(find)47 b(.)g(-type)f(f)i(-name)e('*.html') -g(-print)g(|)h(parallel)f(gzip)150 1971 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 -2080 y Fu(option)i(and)f(parallel's)h Ft(-0)f Fu(option.)275 -2210 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 2320 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 -2449 y Ft(ls)47 b(|)h(parallel)d(mv)i({})h(destdir)275 -2579 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 2688 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 -2798 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 2928 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 -3057 y Fu(as)31 b(alluded)f(to)h(ab)s(o)m(v)m(e.)275 -3187 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 3297 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 -3426 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 3556 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 3665 -y(\(in)e(this)h(case,)g(\014lenames)g(listed)g(one)f(p)s(er)g(line\):) -390 3795 y Ft(while)46 b(IFS=)h(read)g(-r)g(x;)g(do)390 -3905 y(do-something1)d("$x")j("config-$x")390 4014 y(do-something2)d(<) -k("$x")390 4124 y(done)f(<)g(file)g(|)g(process-output)150 -4253 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 4383 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 4513 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 4622 y(to)i(batc)m(h)g -(\014le)g(transformations)f(or)g(renaming:)390 4752 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 4882 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 4991 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 5101 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 5210 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 5340 y Ft(parallel)46 b("zcat)g({})h(|)h -(bzip2)e(>{.}.bz2)f(&&)j(rm)f({}")g(:::)g(*.gz)p eop -end +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(16)275 299 +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)275 299 -y(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 -408 y(F)-8 b(or)31 b(instance,)g(the)g(follo)m(wing)h(command)390 -543 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 -677 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 811 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 945 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 1079 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 1189 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 -1298 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 1408 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 1542 y Ft(parallel)46 b(-j)h(10)g(<)g(file) -150 1676 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 1786 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 2026 y Fs(3.3)68 b(Shell)45 -b(F)-11 b(unctions)150 2185 y Fu(Shell)35 b(functions)h(are)g(a)g(w)m +b(Basic)32 b(Shell)e(F)-8 b(eatures)2246 b(17)150 299 +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 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 2295 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 -2404 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 -2514 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 2623 y(pro)s(cess)30 b(is)g(created)i(to)f(in)m -(terpret)g(them.)275 2757 y(F)-8 b(unctions)30 b(are)h(declared)g -(using)f(this)g(syn)m(tax:)390 2892 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 -3026 y Fu(or)390 3160 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 -3294 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 3403 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 3513 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 3623 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 -3732 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 3842 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 3951 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 4061 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(98\),)h Fr(name)j Fu(ma)m(y)c(not)g(b)s(e)150 -4171 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 4280 y(redirections)32 b(\(see)g(Section)h(3.6)f -([Redirections],)i(page)e(33\))h(asso)s(ciated)g(with)e(the)h(shell)f -(function)h(are)150 4390 y(p)s(erformed)d(when)g(the)i(function)f(is)g -(executed.)275 4524 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 4633 y(Section)31 b(4.1)h([Bourne)e -(Shell)g(Builtins],)h(page)h(43\).)275 4768 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 -4877 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 -4987 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 5121 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 5230 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 -5340 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)p eop end +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(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 -408 y(using)i(the)g(braces,)h(the)g Fr(list)i Fu(m)m(ust)d(b)s(e)g +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(98\),)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 548 y(When)i(a)i(function)f(is)g +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 658 y(rameters)42 b(during)e(its)i +(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(20\).)75 b(The)150 767 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 -877 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 986 +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 -1126 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 1235 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)150 1345 y(function)26 b(has)g(b)s(een)f(giv) +(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 -1455 y Fu(option)f(has)e(b)s(een)h(enabled)g(with)g(the)g +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 1564 y Fu(and)33 b Ft(RETURN)f +(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 -1674 y(has)h(b)s(een)f(enabled.)55 b(See)35 b(Section)h(4.1)g([Bourne)f +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 -1783 y(the)c Ft(trap)e Fu(builtin.)275 1923 y(The)38 +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 -2032 y(function)24 b(nesting)h(lev)m(el.)40 b(F)-8 b(unction)25 +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 2142 y(to)31 b(ab)s(ort.)275 -2281 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 2391 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 2501 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 2610 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 2720 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 2829 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 2939 y(of)h(the)f(last)h(command)f(executed)i(b)s -(efore)e(the)g Ft(return)p Fu(.)275 3078 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 -3188 y(are)25 b(visible)h(only)f(to)g(the)g(function)g(and)f(the)i +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 3298 y(when)j(a)i(shell)g(function)f(calls)h -(other)g(functions.)275 3437 y(Lo)s(cal)41 b(v)-5 b(ariables)42 +(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 -3547 y(F)-8 b(or)41 b(instance,)j(a)d(lo)s(cal)h(v)-5 +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 3656 y(name:)59 b(references)40 +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 -3766 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.)275 -3905 y(The)f(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 4015 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 -4125 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 4234 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 4344 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 -4453 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 -4593 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 -4702 y(another)33 b(function)g Fr(func2)p Fu(,)g(references)g(to)h +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 4812 +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 4951 y(The)29 +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 -5091 y Ft(In)47 b(func2,)f(var)h(=)h(func1)e(local)390 -5230 y(func1\(\))390 5340 y({)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)581 299 -y Ft(local)46 b(var='func1)f(local')581 408 y(func2)390 -518 y(})390 737 y(func2\(\))390 847 y({)581 956 y(echo)i("In)f(func2,)h -(var)f(=)i($var")390 1066 y(})390 1285 y(var=global)390 -1395 y(func1)275 1526 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 -1636 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 1745 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 1855 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 1965 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 -2074 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 2184 y(b)s(een)e(shado)m(w)m(ed)g -(will)h(b)s(ecome)g(visible.)275 2315 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 2425 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 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 2644 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 2863 y(Section)31 b(4.1)h([Bourne)e(Shell)g -(Builtins],)h(page)h(43\).)275 2995 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 3104 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 3214 -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 3449 y Fs(3.4)68 b(Shell)45 b(P)l(arameters)150 -3608 y Fu(A)23 b Fr(parameter)31 b Fu(is)23 b(an)g(en)m(tit)m(y)i(that) +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 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 +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 3718 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 3827 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 3937 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 4069 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 4178 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 4310 -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 4441 y Fj(name)p -Ft(=[)p Fj(value)p Ft(])150 4573 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 -4682 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 -4792 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 4902 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 5011 y(\(see)e(Section)g(3.5.5)i([Arithmetic)e(Expansion],)f -(page)h(30\).)42 b(W)-8 b(ord)31 b(splitting)g(is)g(not)f(p)s -(erformed,)f(with)150 5121 y(the)35 b(exception)h(of)f +(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 -5230 y(men)m(t)33 b(statemen)m(ts)h(ma)m(y)f(also)g(app)s(ear)f(as)g +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 5340 +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)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(\(see)33 b(Section)f(6.11)h([Bash)g(POSIX)d(Mo)s(de],)j(page)f(98\),) -i(these)e(builtins)f(ma)m(y)i(app)s(ear)e(in)g(a)h(command)150 -408 y(after)i(one)g(or)f(more)h(instances)g(of)f(the)h +Fu(mo)s(de)150 1931 y(\(see)c(Section)f(6.11)h([Bash)g(POSIX)d(Mo)s +(de],)j(page)f(98\),)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 518 y(prop)s(erties.)275 645 y(In)29 +(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 755 y(arra)m(y)24 b(index)f(\(see)h(Section)g +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(93\),)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 -865 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 974 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 -1084 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 1193 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 -1303 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(93\),)150 1413 y(the)33 b(v)-5 b(ariable's)33 +(ys],)h(page)f(93\),)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 1522 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 1632 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 -1741 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 1869 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 -1978 y Ft(local)f Fu(builtin)h(commands)g(\(see)i(Section)f(4.2)h +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 2088 y(reference)f(to)g(another)f(v)-5 +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 -2197 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 2307 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 2417 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 -2526 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 2636 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 2763 y Ft(declare)46 -b(-n)h(ref=$1)150 2890 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 -3000 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 3110 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 3219 y(w)m(as)h(passed)f(as)g -Ft($1)p Fu(.)275 3347 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 -3456 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 3566 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 3675 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 -3785 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 3894 y(Shell)43 b(Builtins],)j(page)e(43\).)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 4004 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 4189 y Fk(3.4.1)63 -b(P)m(ositional)41 b(P)m(arameters)150 4336 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 -4446 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 4555 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 4665 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 4774 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 -4884 y(set)k(and)f(unset)f(them)i(\(see)g(Chapter)f(4)g([Shell)h +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 -4993 y(parameters)44 b(are)g(temp)s(orarily)g(replaced)h(when)e(a)h +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 -5103 y([Shell)30 b(F)-8 b(unctions],)32 b(page)f(17\).)275 -5230 y(When)c(a)i(p)s(ositional)g(parameter)g(consisting)f(of)h(more)f +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 -5340 y(b)s(e)h(enclosed)h(in)f(braces.)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 Fk(3.4.2)63 b(Sp)s(ecial)41 b(P)m(arameters)150 446 -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 555 y(assignmen)m(t)31 b(to)g(them)g(is)f(not)h(allo)m(w)m(ed.)150 -722 y Ft(*)432 b Fu(\($*\))38 b(Expands)d(to)i(the)f(p)s(ositional)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 +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 -831 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 941 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 1051 +(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 1160 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 1270 +(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 1379 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 1489 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 1599 +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 1763 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 1872 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 1982 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 2091 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 -2201 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 2311 -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 -2420 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 2584 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 -2748 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 -2858 y(pip)s(eline.)150 3022 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 -3132 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 3241 y Fu(option\).)150 3405 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 -3515 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 3679 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 -3789 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 -3898 y(\(see)31 b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g -(page)h(103\).)150 4062 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 4172 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 4281 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 4391 y -Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m(oking)h(Bash],)g -(page)f(84\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the)f(\014rst)630 -4501 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 -4610 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 4774 -y Ft(_)432 b Fu(\($)p 716 4774 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 4884 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 4994 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 5103 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 5213 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 -5322 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.)p eop end +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 Fs(3.5)68 b(Shell)45 b(Expansions)150 458 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 568 y(sev)m(en)j(kinds)e(of)i(expansion)f(p)s(erformed:)225 -701 y Fq(\017)60 b Fu(brace)31 b(expansion)225 834 y -Fq(\017)60 b Fu(tilde)31 b(expansion)225 967 y Fq(\017)60 -b Fu(parameter)31 b(and)f(v)-5 b(ariable)31 b(expansion)225 -1100 y Fq(\017)60 b Fu(command)30 b(substitution)225 -1233 y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225 -1366 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 1499 -y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 1655 +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 684 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 +793 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 959 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 1069 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 1178 y(\(see)31 +b(Section)h(7.2)f([Job)f(Con)m(trol)h(Builtins],)g(page)h(103\).)150 +1344 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 +1453 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 +1563 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 1673 y Ft(-c)i Fu(option)h(\(see)h(Section)g(6.1)f([In)m(v)m +(oking)h(Bash],)g(page)f(84\),)i(then)d Ft($0)g Fu(is)h(set)g(to)h(the) +f(\014rst)630 1782 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 1892 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 +2058 y Ft(_)432 b Fu(\($)p 716 2058 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 2167 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 2277 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 +2386 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 +2496 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 2605 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 2856 y Fs(3.5)68 b(Shell)45 b(Expansions)150 +3015 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 3125 y(sev)m(en)j(kinds)e(of)i(expansion) +f(p)s(erformed:)225 3265 y Fq(\017)60 b Fu(brace)31 b(expansion)225 +3403 y Fq(\017)60 b Fu(tilde)31 b(expansion)225 3541 +y Fq(\017)60 b Fu(parameter)31 b(and)f(v)-5 b(ariable)31 +b(expansion)225 3678 y Fq(\017)60 b Fu(command)30 b(substitution)225 +3816 y Fq(\017)60 b Fu(arithmetic)32 b(expansion)225 +3954 y Fq(\017)60 b Fu(w)m(ord)30 b(splitting)225 4091 +y Fq(\017)60 b Fu(\014lename)31 b(expansion)275 4260 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 1765 y(pansion,)j(arithmetic)i(expansion,)f(and) +b(ariable)26 b(ex-)150 4370 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 1874 y(w)m(ord)d(splitting;)h(and)f(\014lename)h -(expansion.)275 2007 y(On)42 b(systems)h(that)h(can)g(supp)s(ort)e(it,) +(fashion\);)150 4479 y(w)m(ord)d(splitting;)h(and)f(\014lename)h +(expansion.)275 4620 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 2117 y(substitution)p +b(ailable:)69 b Fr(pro)s(cess)150 4730 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 -2226 y(metic)d(expansion)g(and)e(command)i(substitution.)275 -2359 y(After)f(these)h(expansions)f(are)g(p)s(erformed,)f(quote)i(c)m +4839 y(metic)d(expansion)g(and)e(command)i(substitution.)275 +4980 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 -2469 y(remo)m(v)m(ed)h(unless)f(they)h(ha)m(v)m(e)g(b)s(een)f(quoted)g +5090 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 -2602 y(Only)31 b(brace)i(expansion,)h(w)m(ord)e(splitting,)i(and)e +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 -2711 y(of)24 b(w)m(ords)g(of)g(the)h(expansion;)h(other)e(expansions)g +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)150 2821 y(exceptions)i(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 2931 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(93\).)275 3064 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(33\))h(is)150 3173 y(p)s(erformed.)150 -3369 y Fk(3.5.1)63 b(Brace)40 b(Expansion)150 3516 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 3626 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(31\),)150 3736 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 -3845 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 3955 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 4064 y(pre\014xed)28 +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(93\).)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 -4174 y(eac)m(h)32 b(resulting)e(string,)h(expanding)e(left)j(to)f(righ) -m(t.)275 4307 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 4416 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 4549 y Ft(bash$)46 -b(echo)h(a{d,c,b}e)390 4659 y(ade)g(ace)g(abe)275 4792 +(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 4902 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 5011 +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 5121 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 5230 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 -5340 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) -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(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 408 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 518 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 -628 y(as)i(appropriate.)275 764 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 873 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 983 -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.)275 1119 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 -1228 y(and)h(at)i(least)g(one)f(unquoted)g(comma)g(or)g(a)h(v)-5 +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 +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 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 +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 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.)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 1338 y(brace)d(expansion)f(is)g(left)h(unc)m(hanged.)275 -1474 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 1583 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 1693 y(eligible)e(for)e(brace)h(expansion,)f(and)g(inhibits)g +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 1829 y(This)e(construct)h(is)g(t)m(ypically)i(used)d(as)h +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 1939 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 2074 y Ft(mkdir)46 b(/usr/local/src/bash/{old,n)o -(ew,)o(dist)o(,bug)o(s})275 2210 y Fu(or)390 2346 y Ft(chown)g(root)h +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 -2547 y Fk(3.5.2)63 b(Tilde)41 b(Expansion)150 2694 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 2804 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 2913 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 -3023 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 3132 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 3242 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 3352 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 3487 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 3597 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 3733 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 3843 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 3952 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 4062 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 4171 y(page)c(95\).)57 b(If)35 b(the)g(tilde-pre\014x,)i(sans) +(k],)150 1559 y(page)c(95\).)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 4281 y(`)p Ft(-)p -Fu(',)31 b(`)p Ft(+)p Fu(')f(is)h(assumed.)275 4417 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.)275 -4553 y(Eac)m(h)38 b(v)-5 b(ariable)38 b(assignmen)m(t)h(is)e(c)m(hec)m +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 4662 y(a)d(`)p Ft(:)p Fu(')g(or)g(the)g(\014rst)f(`)p +(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 4772 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 -4882 y(assigns)j(the)f(expanded)g(v)-5 b(alue.)275 5018 +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 5179 y Ft(~)432 b Fu(The)30 -b(v)-5 b(alue)31 b(of)f Ft($HOME)150 5340 y(~/foo)240 -b($HOME/foo)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 Ft(~fred/foo)630 408 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 585 y(~+/foo)192 b($PWD/foo)150 762 y(~-/foo)g -(${OLDPWD-'~-'}/foo)150 939 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 1115 y Ft(~+)p Fj(N)336 +(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 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 1292 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 1509 -y Fk(3.5.3)63 b(Shell)41 b(P)m(arameter)f(Expansion)150 -1656 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 -1765 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 1875 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 1984 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 2136 -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 2246 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 -2355 y(command)30 b(substitution,)g(or)h(parameter)g(expansion.)275 -2507 y(The)40 b(basic)i(form)f(of)g(parameter)h(expansion)f(is)h($)p +(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(')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 2617 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 -2726 y(P)m(arameters],)e(page)f(19\))h(or)e(an)g(arra)m(y)h(reference)f +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(93\).)42 -b(The)29 b(braces)150 2836 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 2946 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 -3097 y(If)k(the)h(\014rst)f(c)m(haracter)i(of)f Fr(parameter)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 3207 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 3317 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 3426 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 3536 y Fu(itself.)74 b(This)41 -b(is)g(kno)m(wn)g(as)g Ft(indirect)28 b(expansion)p Fu(.)71 -b(The)41 b(v)-5 b(alue)42 b(is)f(sub)5 b(ject)41 b(to)h(tilde)g -(expansion,)150 3645 y(parameter)e(expansion,)i(command)d -(substitution,)j(and)d(arithmetic)h(expansion.)68 b(If)39 -b Fr(parameter)47 b Fu(is)150 3755 y(a)40 b(nameref,)h(this)e(expands)g -(to)g(the)h(name)f(of)g(the)h(v)-5 b(ariable)40 b(referenced)f(b)m(y)g -Fr(parameter)46 b Fu(instead)40 b(of)150 3865 y(p)s(erforming)32 -b(the)i(complete)h(indirect)f(expansion.)51 b(The)33 -b(exceptions)i(to)f(this)g(are)g(the)f(expansions)h(of)150 -3974 y($)p Fi({)p Fu(!)p Fr(pre\014x)6 b Fu(*)p Fi(})39 -b Fu(and)f($)p Fi({)p Fu(!)p Fr(name)5 b Fu([@])p Fi(})40 -b Fu(describ)s(ed)d(b)s(elo)m(w.)64 b(The)37 b(exclamation)k(p)s(oin)m -(t)d(m)m(ust)g(immediately)150 4084 y(follo)m(w)32 b(the)e(left)h -(brace)g(in)f(order)g(to)h(in)m(tro)s(duce)f(indirection.)275 -4236 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 4345 y(command)30 b(substitution,)g(and)g -(arithmetic)i(expansion.)275 4497 y(When)h(not)h(p)s(erforming)e +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 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 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 4607 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 4716 +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)150 4826 y(for)36 b(b)s(oth)g +(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 4935 y(op)s(erator)31 b(tests)g(only)f(for)g(existence.)150 -5121 y Ft(${)p Fj(parameter)p Ft(:)p Fq(\000)p Fj(word)p -Ft(})630 5230 y Fu(If)g Fr(parameter)37 b Fu(is)30 b(unset)g(or)h(n)m +(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 5340 y(the)31 b(v)-5 b(alue)30 b(of)h -Fr(parameter)37 b Fu(is)31 b(substituted.)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)150 299 -y Ft(${)p Fj(parameter)p Ft(:=)p Fj(word)p Ft(})630 408 -y Fu(If)33 b Fr(parameter)40 b Fu(is)33 b(unset)f(or)h(n)m(ull,)h(the)f +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 518 y(The)c(v)-5 b(alue)32 b(of)f +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 628 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 -786 y Ft(${)p Fj(parameter)p Ft(:?)p Fj(word)p Ft(})630 -896 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 1005 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 1115 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 1273 y Ft(${)p Fj(parameter)p -Ft(:+)p Fj(word)p Ft(})630 1383 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 1492 y(of)31 b Fr(w)m(ord)i -Fu(is)e(substituted.)150 1650 y Ft(${)p Fj(parameter)p -Ft(:)p Fj(offset)p Ft(})150 1760 y(${)p Fj(parameter)p -Ft(:)p Fj(offset)p Ft(:)p Fj(lengt)o(h)p Ft(})630 1870 +(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 -1979 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 2089 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 2198 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 2308 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 -2418 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 2527 y(expressions)30 b(\(see)h(Section)g(6.5)h -([Shell)e(Arithmetic],)i(page)f(91\).)630 2661 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(91\).)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 2771 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 2880 +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 -2990 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 3099 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 3209 -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 -3319 y(with)j(the)h(`)p Ft(:-)p Fu(')f(expansion.)630 -3453 y(Here)43 b(are)g(some)f(examples)h(illustrating)g(substring)f -(expansion)g(on)g(parameters)h(and)630 3562 y(subscripted)29 -b(arra)m(ys:)630 3696 y Ft($)47 b(string=01234567890abcdefgh)630 -3806 y($)g(echo)g(${string:7})630 3915 y(7890abcdefgh)630 -4025 y($)g(echo)g(${string:7:0})630 4244 y($)g(echo)g(${string:7:2})630 -4354 y(78)630 4463 y($)g(echo)g(${string:7:-2})630 4573 -y(7890abcdef)630 4682 y($)g(echo)g(${string:)e(-7})630 -4792 y(bcdefgh)630 4902 y($)i(echo)g(${string:)e(-7:0})630 -5121 y($)i(echo)g(${string:)e(-7:2})630 5230 y(bc)630 -5340 y($)i(echo)g(${string:)e(-7:-2})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 Ft(bcdef)630 408 y($)47 b(set)g(--)h(01234567890abcdefgh)630 -518 y($)f(echo)g(${1:7})630 628 y(7890abcdefgh)630 737 -y($)g(echo)g(${1:7:0})630 956 y($)g(echo)g(${1:7:2})630 -1066 y(78)630 1176 y($)g(echo)g(${1:7:-2})630 1285 y(7890abcdef)630 -1395 y($)g(echo)g(${1:)g(-7})630 1504 y(bcdefgh)630 1614 -y($)g(echo)g(${1:)g(-7:0})630 1833 y($)g(echo)g(${1:)g(-7:2})630 -1943 y(bc)630 2052 y($)g(echo)g(${1:)g(-7:-2})630 2162 -y(bcdef)630 2271 y($)g(array[0]=01234567890abcdef)o(gh)630 -2381 y($)g(echo)g(${array[0]:7})630 2491 y(7890abcdefgh)630 -2600 y($)g(echo)g(${array[0]:7:0})630 2819 y($)g(echo)g -(${array[0]:7:2})630 2929 y(78)630 3039 y($)g(echo)g(${array[0]:7:-2}) -630 3148 y(7890abcdef)630 3258 y($)g(echo)g(${array[0]:)e(-7})630 -3367 y(bcdefgh)630 3477 y($)i(echo)g(${array[0]:)e(-7:0})630 -3696 y($)i(echo)g(${array[0]:)e(-7:2})630 3806 y(bc)630 -3915 y($)i(echo)g(${array[0]:)e(-7:-2})630 4025 y(bcdef)630 -4171 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 4281 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 -4390 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 4500 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.)630 4646 y(The)i(follo)m(wing)i(examples)f(illustrate)h +(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 -4755 y(eters:)630 4902 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 5011 -y($)g(echo)g(${@:7})630 5121 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 5230 y($)g(echo)g(${@:7:0})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(${@:7:2})630 408 y(7)g(8)630 518 y($)g(echo)g -(${@:7:-2})630 628 y(bash:)f(-2:)h(substring)f(expression)f(<)i(0)630 -737 y($)g(echo)g(${@:)g(-7:2})630 847 y(b)g(c)630 956 -y($)g(echo)g(${@:0})630 1066 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 1176 y($)f(echo)g(${@:0:2}) -630 1285 y(./bash)f(1)630 1395 y($)h(echo)g(${@:)g(-7:0})630 -1677 y Fu(If)36 b Fr(parameter)43 b Fu(is)36 b(an)g(indexed)g(arra)m(y) +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 1786 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 1896 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 2005 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 -2115 y(than)30 b(zero.)630 2287 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 2459 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 2569 -y($)f(echo)g(${array[@]:7})630 2679 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 2788 y($)g(echo)g(${array[@]:7:2})630 -2898 y(7)g(8)630 3007 y($)g(echo)g(${array[@]:)e(-7:2})630 -3117 y(b)i(c)630 3226 y($)g(echo)g(${array[@]:)e(-7:-2})630 -3336 y(bash:)h(-2:)h(substring)f(expression)f(<)i(0)630 -3446 y($)g(echo)g(${array[@]:0})630 3555 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 3665 -y($)g(echo)g(${array[@]:0:2})630 3774 y(0)g(1)630 3884 -y($)g(echo)g(${array[@]:)e(-7:0})630 4166 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 4338 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 4448 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 -4557 y(parameters)h(are)f(used,)g Ft($@)g Fu(is)g(pre\014xed)g(to)h -(the)f(list.)150 4792 y Ft(${!)p Fj(prefix)p Ft(*})150 -4902 y(${!)p Fj(prefix)p Ft(@})630 5011 y Fu(Expands)24 +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 -5121 y(the)k(\014rst)f(c)m(haracter)j(of)e(the)g Ft(IFS)f +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 5230 y(sion)35 +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 -5340 y(w)m(ord.)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(name)p Ft([@]})150 408 y(${!)p Fj(name)p -Ft([*]})630 518 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 628 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 737 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 847 -y(expands)30 b(to)h(a)f(separate)i(w)m(ord.)150 1011 -y Ft(${#)p Fj(parameter)p Ft(})630 1121 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 1230 y(If)i -Fr(parameter)50 b Fu(is)43 b(`)p Ft(*)p Fu(')g(or)g(`)p +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 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 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 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 +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 1340 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 1450 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 1559 +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 -1669 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 -1778 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 -1888 y(last)g(elemen)m(t.)150 2052 y Ft(${)p Fj(parameter)p -Ft(#)p Fj(word)p Ft(})150 2162 y(${)p Fj(parameter)p -Ft(##)p Fj(word)p Ft(})630 2271 y Fu(The)43 b Fr(w)m(ord)k +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 2381 y(rules)31 b(describ)s(ed)g(b)s(elo)m(w) +(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 -(32\).)46 b(If)32 b(the)630 2491 y(pattern)37 b(matc)m(hes)h(the)f(b)s +(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 2600 y(result)f(of)h(the)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)630 2710 +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 2819 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(')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 2929 y(eac)m(h)38 b(p)s(ositional)g(parameter)g(in)f +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 3039 y Fr(parameter)38 b Fu(is)32 b(an)f(arra)m(y)h(v)-5 +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 3148 +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 -3258 y(the)h(resultan)m(t)g(list.)150 3422 y Ft(${)p -Fj(parameter)p Ft(\045)p Fj(word)p Ft(})150 3532 y(${)p -Fj(parameter)p Ft(\045\045)p Fj(word)p Ft(})630 3641 -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 -3751 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(32\).)46 -b(If)32 b(the)630 3861 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 3970 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 4080 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 4189 -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 +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 4299 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e +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 -4408 y(list.)56 b(If)34 b Fr(parameter)42 b Fu(is)35 +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 -4518 y(remo)m(v)-5 b(al)44 b(op)s(eration)g(is)e(applied)h(to)h(eac)m +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 -4628 y(expansion)30 b(is)h(the)f(resultan)m(t)h(list.)150 -4792 y Ft(${)p Fj(parameter)p Ft(/)p Fj(pattern)p Ft(/)p -Fj(stri)o(ng)p Ft(})630 4902 y Fu(The)37 b Fr(pattern)g +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 5011 y Fr(P)m(arameter)46 +(\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 -5121 y(replaced)31 b(with)g Fr(string)p Fu(.)42 b(The)30 +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 5230 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(32\).)41 b(If)29 b Fr(pattern)g -Fu(b)s(egins)f(with)630 5340 y(`)p Ft(/)p Fu(',)43 b(all)e(matc)m(hes)g +(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)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 +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 408 y(the)32 b(expanded)f(v)-5 +(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 518 y(the)24 b(end)f(of)h(the)h(expanded)e(v)-5 +(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 -628 y Fu(are)36 b(deleted)g(and)f(the)g Ft(/)g Fu(follo)m(wing)i +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 737 y Fu(shell)31 b(option)h(\(see)g(the)g +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 847 y(page)45 b(65\))h(is)f(enabled,)j(the)d(matc)m(h)g +(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 -956 y(alphab)s(etic)36 b(c)m(haracters.)56 b(If)34 b +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 -1066 y(applied)26 b(to)g(eac)m(h)h(p)s(ositional)f(parameter)h(in)e +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 -1176 y(list.)38 b(If)21 b Fr(parameter)28 b Fu(is)22 +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 -1285 y(op)s(eration)30 b(is)g(applied)f(to)i(eac)m(h)g(mem)m(b)s(er)e +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 -1395 y(the)h(resultan)m(t)g(list.)150 1559 y Ft(${)p -Fj(parameter)p Ft(^)p Fj(pattern)p Ft(})150 1669 y(${)p -Fj(parameter)p Ft(^^)p Fj(pattern)p Ft(})150 1778 y(${)p -Fj(parameter)p Ft(,)p Fj(pattern)p Ft(})150 1888 y(${)p -Fj(parameter)p Ft(,,)p Fj(pattern)p Ft(})630 1998 y Fu(This)36 +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 2107 +(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 -2217 y(c)m(haracter)32 b(in)e(the)g(expanded)f(v)-5 b(alue)31 +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 2326 y(it)j(matc)m(hes)h(the)g +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 2436 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 -2545 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 2655 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 -2765 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 2874 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 -2984 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 -3093 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 -3203 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 3313 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 -3422 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 3587 y Ft(${)p Fj(parameter)p -Ft(@)p Fj(operator)p Ft(})630 3696 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 3806 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 3915 y Fu(is)j(a)h(single)g(letter:)630 -4080 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 4189 y(a)g(format)f(that)h(can)g(b)s(e)f(reused)f(as)i -(input.)630 4354 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 4463 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 -4573 y(anism.)630 4737 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 4847 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 4956 y(the)31 b(Prompt],)f(page)h(96\).)630 -5121 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 -5230 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 5340 -y(its)31 b(attributes)g(and)e(v)-5 b(alue.)p eop end +(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 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 -408 y(rameter)7 b Fu('s)31 b(attributes.)630 563 y(If)e +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(96\).)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 +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 672 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 782 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 -892 y(in)30 b(turn,)g(and)f(the)i(expansion)f(is)h(the)f(resultan)m(t)h -(list.)630 1024 y(The)22 b(result)g(of)g(the)h(expansion)f(is)g(sub)5 +(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 +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 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 -1133 y(as)31 b(describ)s(ed)e(b)s(elo)m(w.)150 1328 y -Fk(3.5.4)63 b(Command)41 b(Substitution)150 1474 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 1584 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 1716 y Ft($\()p Fj(command)p Ft(\))150 -1848 y Fu(or)390 1980 y Ft(`)p Fj(command)p Ft(`)150 -2112 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 2222 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 -2331 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 2441 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 2550 -y(but)30 b(faster)g Ft($\(<)g Fj(file)p Ft(\))p Fu(.)275 -2682 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 -2792 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 -2902 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 3011 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 3143 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 3253 y(the)31 b(inner)e(bac)m(kquotes)j(with)e(bac)m(kslashes.)275 -3385 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 -3494 y(are)i(not)f(p)s(erformed)f(on)h(the)h(results.)150 -3689 y Fk(3.5.5)63 b(Arithmetic)40 b(Expansion)150 3836 -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 3945 y(of)31 b(the)f(result.)41 b(The)30 -b(format)g(for)g(arithmetic)i(expansion)e(is:)390 4077 -y Ft($\(\()47 b Fj(expression)e Ft(\)\))275 4209 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 4319 +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 4428 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 4538 +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 4670 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 4780 y(Arithmetic],)32 b(page)f(91\).)42 +g(6.5)h([Shell)150 2415 y(Arithmetic],)32 b(page)f(91\).)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 -4889 y(to)f(the)g(standard)e(error)h(and)g(no)g(substitution)g(o)s -(ccurs.)150 5083 y Fk(3.5.6)63 b(Pro)s(cess)42 b(Substitution)150 -5230 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 5340 y(It)d(tak)m(es)i(the)f(form)f(of)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)390 299 -y Ft(<\()p Fj(list)p Ft(\))150 447 y Fu(or)390 594 y -Ft(>\()p Fj(list)p Ft(\))150 742 y Fu(The)28 b(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 852 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 961 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 1071 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 1181 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 1290 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 -1400 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 1548 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 1657 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 1870 y Fk(3.5.7)63 b(W)-10 b(ord)41 b(Splitting)150 -2017 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 -2126 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 2274 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 2384 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 2493 y(is)36 b(exactly)j Ft()p +b(alue)150 5230 y(is)36 b(exactly)j Ft()p Fu(,)32 b(the)37 b(default,)h(then)e(sequences)h(of)67 -b Ft()p Fu(,)36 b Ft()p Fu(,)h(and)150 2603 +b Ft()p Fu(,)36 b Ft()p Fu(,)h(and)150 5340 y Ft()28 b Fu(at)k(the)f(b)s(eginning)f(and)h(end)f(of)h(the)g -(results)g(of)g(the)g(previous)g(expansions)f(are)i(ignored,)150 -2712 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 2822 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 2932 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 3041 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 3151 +(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 3260 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 3370 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 -3518 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 3627 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 3737 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 -3846 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 3956 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 4066 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 -4175 y(argumen)m(t)31 b(remo)m(v)-5 b(al.)275 4323 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 4535 y Fk(3.5.8)63 b(Filename)41 b(Expansion)150 -4682 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 4792 y(page)d(61\),)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 4902 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 -5011 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(32\).)43 -b(If)150 5121 y(no)26 b(matc)m(hing)i(\014lenames)e(are)h(found,)f(and) +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 5230 y(unc)m(hanged.)40 b(If)30 +(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 -5340 y(If)i(the)g Ft(failglob)e Fu(shell)i(option)h(is)f(set,)h(and)f +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)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)30 b(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 408 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 544 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 654 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 763 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 873 y(In)i(other)g(cases,)i(the)e(`)p +(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 1009 y(When)30 b(matc)m(hing)i(a)f(\014lename,)h(the)f(slash)f +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 1118 y(slash)d(in)f(the)h(pattern,)h(but)e +(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 1228 y(c)m(haracter)j(as)f +(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(32\).)275 1364 y(See)d(the)g(description)g(of)g +(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 1473 y(tion)j(of)f(the)h +(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 1609 y(The)36 +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 -1719 y(a)42 b(pattern.)74 b(If)41 b Ft(GLOBIGNORE)e Fu(is)i(set,)k(eac) +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 1828 y(patterns)34 b(in)g Ft(GLOBIGNORE)d +(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 1938 +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 2047 y(The)d(\014lenames)h Ft(.)g Fu(and)f Ft(..)h +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 -2157 y(setting)30 b Ft(GLOBIGNORE)d Fu(to)j(a)f(non-n)m(ull)g(v)-5 +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 2267 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 2376 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 -2486 y Fu(option)i(is)f(disabled)g(when)g Ft(GLOBIGNORE)d -Fu(is)k(unset.)150 2686 y Fk(3.5.8.1)63 b(P)m(attern)40 -b(Matc)m(hing)150 2833 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 2943 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 3052 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 3162 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 3298 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 3459 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 -3568 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 3678 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 -3788 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 3897 y(and)k(sub)s(directories.)150 -4058 y Ft(?)432 b Fu(Matc)m(hes)32 b(an)m(y)f(single)g(c)m(haracter.) -150 4219 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 4328 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 4438 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 4547 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 4657 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 4767 +(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 4876 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 4986 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 5095 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: 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)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 -871 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 981 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 1115 y Ft(alnum)142 b(alpha)g(ascii)f(blank)h(cntrl)g -(digit)g(graph)g(lower)870 1224 y(print)g(punct)g(space)f(upper)h(word) -190 b(xdigit)630 1358 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 1468 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 1602 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 1711 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 1821 +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 1955 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 2113 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 2222 +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 2332 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 -2442 y(more)e(of)f(the)h(follo)m(wing)g(sub-patterns:)150 -2600 y Ft(?\()p Fj(pattern-list)p Ft(\))630 2709 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 -2867 y Ft(*\()p Fj(pattern-list)p Ft(\))630 2977 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 3135 y Ft(+\()p Fj(pattern-list)p Ft(\))630 3245 -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 3403 y Ft(@\()p Fj(pattern-list)p -Ft(\))630 3513 y Fu(Matc)m(hes)g(one)f(of)f(the)h(giv)m(en)g(patterns.) -150 3671 y Ft(!\()p Fj(pattern-list)p Ft(\))630 3780 -y Fu(Matc)m(hes)h(an)m(ything)f(except)g(one)g(of)f(the)h(giv)m(en)g -(patterns.)275 3939 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 4048 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 4158 y(matc)m(hes)38 b(against)g(shorter)e +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 4267 y(ma)m(y)31 b(b)s(e)f(faster.)150 -4465 y Fk(3.5.9)63 b(Quote)41 b(Remo)m(v)-7 b(al)150 -4612 y Fu(After)32 b(the)g(preceding)g(expansions,)h(all)f(unquoted)f +(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 -4722 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 4961 y Fs(3.6)68 -b(Redirections)150 5121 y Fu(Before)32 b(a)f(command)f(is)h(executed,)h +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 5230 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 5340 +(\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)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(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 408 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 518 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 628 y(in)g(the)h(order)f(they)g(app)s(ear,)g -(from)g(left)h(to)g(righ)m(t.)275 758 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 868 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 977 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 -1087 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 +(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 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 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 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 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 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 1196 y(descriptor)i(to)g(close.)52 +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 1306 y(the)d(command,)f(allo)m(wing)i(the)f(shell)f(programmer)g +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 -1437 y(In)d(the)i(follo)m(wing)h(descriptions,)g(if)e(the)h(\014le)g +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 1546 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 1656 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 1765 y(to)e(the)g(standard)e(output)h(\(\014le)h -(descriptor)f(1\).)275 1896 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 2005 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 2115 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 2225 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 -2355 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 -2485 y Ft(ls)47 b(>)h Fj(dirlist)d Ft(2>&1)150 2616 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 2725 y(\014le)h Fr(dirlist)p Fu(,)h(while)f(the)h(command)390 -2856 y Ft(ls)47 b(2>&1)g(>)g Fj(dirlist)150 2986 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 3096 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 3226 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 3336 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 3446 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 -3555 y(describ)s(ed)j(b)s(elo)m(w.)150 3707 y Ft(/dev/fd/)p -Fj(fd)630 3816 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 -3968 y Ft(/dev/stdin)630 4077 y Fu(File)i(descriptor)e(0)h(is)f -(duplicated.)150 4228 y Ft(/dev/stdout)630 4338 y Fu(File)i(descriptor) -e(1)h(is)f(duplicated.)150 4489 y Ft(/dev/stderr)630 -4599 y Fu(File)i(descriptor)e(2)h(is)f(duplicated.)150 -4750 y Ft(/dev/tcp/)p Fj(host)p Ft(/)p Fj(port)630 4860 -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 4969 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 5121 y Ft(/dev/udp/)p Fj(host)p Ft(/)p Fj(port)630 -5230 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 5340 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.)p eop end +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)275 299 -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 439 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 548 y(con\015ict)i(with)f -(\014le)h(descriptors)f(the)g(shell)h(uses)f(in)m(ternally)-8 -b(.)150 753 y Fk(3.6.1)63 b(Redirecting)40 b(Input)150 -900 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 1010 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 1119 -y(sp)s(eci\014ed.)275 1259 y(The)c(general)j(format)e(for)h -(redirecting)g(input)e(is:)390 1399 y Ft([)p Fj(n)p Ft(]<)p -Fj(word)150 1604 y Fk(3.6.2)63 b(Redirecting)40 b(Output)150 -1751 y Fu(Redirection)31 b(of)g(output)f(causes)h(the)f(\014le)h(whose) +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 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 1861 y(op)s(ened)d(for)g(writing)g(on)g(\014le)h +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 1970 +(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 2110 y(The)e(general)j(format)e(for)h -(redirecting)g(output)f(is:)390 2250 y Ft([)p Fj(n)p -Ft(]>[|])p Fj(word)275 2390 y Fu(If)g(the)h(redirection)g(op)s(erator)g +(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 2500 y(enabled,)h(the)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 -2609 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 -2719 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 2829 y(named)30 b(b)m(y)g -Fr(w)m(ord)k Fu(exists.)150 3033 y Fk(3.6.3)63 b(App)s(ending)42 -b(Redirected)e(Output)150 3180 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 3290 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 3399 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 3539 y(The)f(general)j(format)e(for)h(app)s(ending)e -(output)h(is:)390 3679 y Ft([)p Fj(n)p Ft(]>>)p Fj(word)150 -3884 y Fk(3.6.4)63 b(Redirecting)40 b(Standard)h(Output)g(and)g -(Standard)g(Error)150 4031 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 4141 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 4281 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 4421 y Ft(&>)p Fj(word)150 4561 -y Fu(and)390 4701 y Ft(>&)p Fj(word)150 4841 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 -4981 y Ft(>)p Fj(word)46 b Ft(2>&1)275 5121 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 5230 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 5340 y(reasons.)p eop -end +(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.5)63 b(App)s(ending)42 b(Standard)f(Output)g(and)g(Standard)g -(Error)150 446 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 555 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 691 y(The)f(format)i(for)f(app) -s(ending)f(standard)h(output)g(and)f(standard)h(error)g(is:)390 -828 y Ft(&>>)p Fj(word)150 964 y Fu(This)g(is)g(seman)m(tically)j -(equiv)-5 b(alen)m(t)32 b(to)390 1100 y Ft(>>)p Fj(word)46 -b Ft(2>&1)275 1236 y Fu(\(see)31 b(Duplicating)h(File)f(Descriptors)g -(b)s(elo)m(w\).)150 1436 y Fk(3.6.6)63 b(Here)41 b(Do)s(cumen)m(ts)150 -1583 y Fu(This)26 b(t)m(yp)s(e)g(of)h(redirection)g(instructs)f(the)g +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 1693 y(con)m(taining)h(only)e Fr(w)m(ord)k +(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 -1803 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 1939 y(The)f(format)i(of)g(here-do)s(cumen)m(ts)f -(is:)390 2075 y Ft([)p Fj(n)p Ft(]<<[)p Fq(\000)p Ft(])p -Fj(word)772 2184 y(here-document)390 2294 y(delimiter)275 -2430 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 -2540 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 -2649 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 2759 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 -2868 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 -2978 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 3114 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 -3224 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 3333 y(b)s(e)e(inden)m(ted)g(in)g(a) -h(natural)f(fashion.)150 3534 y Fk(3.6.7)63 b(Here)41 -b(Strings)150 3681 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 3817 y Ft([)p Fj(n)p -Ft(]<<<)46 b Fj(word)275 3953 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 4063 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 -4172 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 4282 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)h(sp)s -(eci\014ed\).)150 4483 y Fk(3.6.8)63 b(Duplicating)41 -b(File)g(Descriptors)150 4630 y Fu(The)30 b(redirection)h(op)s(erator) -390 4766 y Ft([)p Fj(n)p Ft(]<&)p Fj(word)150 4902 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 5011 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 -5121 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 5230 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 5340 y(is)g(used.)p -eop end +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(The)29 b(op)s(erator)390 432 y Ft([)p Fj(n)p Ft(]>&)p -Fj(word)150 565 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 674 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 784 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 894 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 -1003 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 -1199 y Fk(3.6.9)63 b(Mo)m(ving)41 b(File)h(Descriptors)150 -1346 y Fu(The)30 b(redirection)h(op)s(erator)390 1479 -y Ft([)p Fj(n)p Ft(]<&)p Fj(digit)p Ft(-)150 1612 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 1722 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 1855 y(Similarly)-8 b(,)31 b(the)f(redirection)h(op)s -(erator)390 1988 y Ft([)p Fj(n)p Ft(]>&)p Fj(digit)p -Ft(-)150 2121 y Fu(mo)m(v)m(es)e(the)g(\014le)f(descriptor)f +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)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 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 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 +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 +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 +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 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 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 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 -2230 y(if)i Fr(n)g Fu(is)h(not)f(sp)s(eci\014ed.)150 -2426 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 2573 y Fu(The)30 -b(redirection)h(op)s(erator)390 2706 y Ft([)p Fj(n)p -Ft(]<>)p Fj(word)150 2839 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 2949 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 3058 y(exist,)e(it)g(is)g -(created.)150 3296 y Fs(3.7)68 b(Executing)46 b(Commands)150 -3519 y Fk(3.7.1)63 b(Simple)41 b(Command)h(Expansion)150 -3666 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 -3775 y(men)m(ts,)e(and)f(redirections,)h(from)f(left)h(to)g(righ)m(t.) -199 3908 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 4018 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 -4151 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 4260 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 4370 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 4479 y(men)m(ts.)199 4612 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(33\).)199 -4745 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 4855 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 4964 y(b)s(eing)30 -b(assigned)h(to)g(the)f(v)-5 b(ariable.)275 5121 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 5230 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 5340 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)p eop end +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(a)39 b(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 408 y(status.)275 538 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 648 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 778 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 887 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 997 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 1107 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 1216 y(zero.)150 -1406 y Fk(3.7.2)63 b(Command)41 b(Searc)m(h)f(and)h(Execution)150 -1553 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 -1663 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 1793 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 1902 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 -2012 y(F)-8 b(unctions],)31 b(page)h(17.)199 2142 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 -2251 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 2381 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 2491 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 2600 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 2710 -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 2819 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 2929 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 3039 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 3148 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)330 3258 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 3367 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 -3477 y(message)k(and)f(returns)f(an)i(exit)g(status)g(of)f(127.)199 -3607 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 3716 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 3826 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 3936 y(argumen)m(ts)g(supplied,)e(if)h(an)m(y)-8 -b(.)199 4065 y(5.)61 b(If)35 b(this)h(execution)h(fails)f(b)s(ecause)g +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 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 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 +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 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 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 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 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 +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 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 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 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 +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 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 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 4175 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 -4285 y(Section)g(3.8)h([Shell)e(Scripts],)g(page)i(41.)199 -4415 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 4524 y(complete)32 b(and)e(collects)i(its)f(exit)g(status.)150 -4714 y Fk(3.7.3)63 b(Command)41 b(Execution)f(En)m(vironmen)m(t)150 -4861 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 -4991 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 5101 y(the)g Ft(exec)e -Fu(builtin)225 5230 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 5340 y(in)m(v)m(o)s(cation)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)225 299 -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)225 434 y Fq(\017)60 b Fu(curren)m(t)30 b(traps)g(set)h(b)m -(y)f Ft(trap)225 570 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 680 y(shell's)i(paren)m(t)f -(in)g(the)h(en)m(vironmen)m(t)225 815 y Fq(\017)60 b -Fu(shell)44 b(functions)f(de\014ned)f(during)h(execution)i(or)e +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)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 2941 y(shell's)i(paren)m(t) +f(in)g(the)h(en)m(vironmen)m(t)225 3077 y Fq(\017)60 +b 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 -925 y(en)m(vironmen)m(t)225 1061 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 1170 -y(b)m(y)c Ft(set)225 1306 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(65\))225 1441 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(92\))225 -1577 y Fq(\017)60 b Fu(v)-5 b(arious)50 b(pro)s(cess)f +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 1687 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 1849 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 1959 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 2068 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 -2205 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 2315 y(the)g(command)225 2450 +(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 -2586 y Fq(\017)60 b Fu(the)31 b(\014le)f(creation)i(mo)s(de)e(mask)225 -2722 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 2831 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(39\))225 2967 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 3076 y(traps)e(ignored)h(b)m(y)f(the)g(shell)h(are)g(ignored) -275 3239 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 -3349 y(en)m(vironmen)m(t.)275 3485 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 3595 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 3705 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 -3814 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 3924 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 -4033 y(a\013ect)32 b(the)f(shell's)f(execution)i(en)m(vironmen)m(t.)275 -4170 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 4280 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 4416 +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 4526 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 4636 +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 4837 y Fk(3.7.4)63 -b(En)m(vironmen)m(t)150 4984 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 -5094 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 5230 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 5340 +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)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)150 299 -y(marking)26 b(it)g(for)g Fr(exp)s(ort)h Fu(to)g(c)m(hild)f(pro)s +(parameter)f(for)g(eac)m(h)i(name)e(found,)i(automatically)150 +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)150 408 y Ft(export)c Fu(and)i(`)p Ft(declare)29 +(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 518 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 -628 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 737 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 847 y(mo)s(di\014ed)26 +(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 956 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 1090 +(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 -1199 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 -1309 y(page)g(19.)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 1442 y(If)g(the)h Ft(-k)g Fu(option)g(is)g(set)h(\(see)g +(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 1552 y(assignmen)m(ts)f(are)g(placed)h(in)e(the)h(en)m +(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 1661 y(command)g(name.)275 1795 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 1904 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 2101 y Fk(3.7.5)63 -b(Exit)40 b(Status)150 2248 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 2357 +(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 2467 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 -2577 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 -2686 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 2819 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 2929 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 3039 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 3148 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 3258 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 3391 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 3501 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 -3634 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 -3743 y(is)c(greater)i(than)e(zero.)275 3877 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 3986 -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 -4096 y(page)31 b(9\).)275 4229 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 4339 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 4448 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 4558 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(102\),)h +(\(see)f(Chapter)f(7)h([Job)g(Con)m(trol],)150 2464 y(page)f(102\),)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: 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(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 +Fu(builtin)h(\(see)150 3598 y(Section)c(7.2)g([Job)e(Con)m(trol)i (Builtins],)g(page)g(103\))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 +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(65\),)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(84\),)i +5121 y(Section)39 b(6.1)g([In)m(v)m(oking)g(Bash],)h(page)f(84\),)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 +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 5011 y(Most)36 b(v)m(ersions)g(of)g(Unix)f(mak)m(e)h(this)g +(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: 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(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 +(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 @@ -12202,10 +12262,10 @@ Fj(n)p Ft(])630 940 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 1096 y Ft(mapfile)870 1229 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 1338 -y([-C)g Fj(callback)p Ft(])e([-c)i Fj(quantum)p Ft(])f([)p -Fj(array)p Ft(])630 1471 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 +Fj(count)p Ft(])1061 1338 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 1471 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 1581 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 @@ -12430,33 +12490,33 @@ Fr(fd)p Fu(.)p eop end 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(])f([-t])h([-u)g -Fj(fd)p Ft(])1061 518 y([-C)g Fj(callback)p Ft(])e([-c)i -Fj(quantum)p Ft(])f([)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 -(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 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 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 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 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 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 2544 y(b)s(e)k(executed,)h(or)g(nothing)f(if)g +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(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 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 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 +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 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 +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 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 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 @@ -12628,7 +12688,7 @@ 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(38\),)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: 62 68 @@ -12762,7 +12822,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(22\).)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 @@ -13078,7 +13138,7 @@ b(tracing)i(is)f(enabled:)63 b(command)42 b(substitution,)i(shell)f 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 4189 y(Section)j(3.5.8.1)i -([P)m(attern)f(Matc)m(hing],)g(page)f(32\))h(are)f(enabled.)630 +([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 4463 y Ft(${)p @@ -13101,7 +13161,7 @@ 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(32\))g(b)s(eha)m(v)m(e) +(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 @@ -13141,7 +13201,7 @@ y Ft(hostcomplete)1110 4074 y Fu(If)38 b(set,)j(and)c(Readline)i(is)f 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 4816 y(shell)31 b(exits)g(\(see)g(Section)g(3.7.6)h([Signals],)g -(page)f(40\).)630 5011 y Ft(inherit_errexit)1110 5121 +(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 5230 y(tion,)33 b(instead)g(of)f(unsetting)g(it)h(in)f(the)g(subshell)f(en)m @@ -13342,817 +13402,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 1011 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 1121 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 1230 y(re-initialized.)57 b(Assignmen)m(ts)35 +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 1340 y(loses)31 +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 1504 y Ft(BASH_ALIASES)630 -1614 y Fu(An)40 b(asso)s(ciativ)m(e)j(arra)m(y)d(v)-5 +(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 1724 y(of)c(aliases)h(as)f(main)m(tained)g(b)m(y)g +(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 1833 y(Builtins],)31 b(page)g(43\).)42 b(Elemen)m(ts)31 +(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 1943 y(ev)m(er,)k(unsetting)f(arra)m(y)g(elemen)m(ts)g +(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 2052 y(from)25 b(the)h(alias)h(list.)40 b(If)25 +(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 2162 y(if)k(it)h(is)g(subsequen)m(tly)f -(reset.)150 2326 y Ft(BASH_ARGC)630 2436 y Fu(An)39 b(arra)m(y)g(v)-5 +(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 2545 y(of)i(the)g(curren)m +(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 2655 +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 -2765 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 2874 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 2984 y(extended)34 b(debugging)f(mo)s(de)g +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 3093 y(a)e(description)g(of)f(the)h Ft(extdebug)d +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 3203 y Fu(after)d(the)f(shell)g(has)g(started)h(to)g -(execute)g(a)g(script)f(ma)m(y)g(result)g(in)g(inconsisten)m(t)h(v)-5 -b(alues.)150 3367 y Ft(BASH_ARGV)630 3477 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 -3587 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 -3696 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 -3806 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 -3915 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 -4025 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 -4134 y Fu(builtin\).)51 b(Setting)35 b Ft(extdebug)c -Fu(after)k(the)f(shell)g(has)f(started)i(to)f(execute)h(a)g(script)e -(ma)m(y)630 4244 y(result)d(in)g(inconsisten)m(t)i(v)-5 -b(alues.)150 4408 y Ft(BASH_ARGV0)630 4518 y Fu(When)31 +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 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 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 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 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 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 4628 y(\(iden)m(tical)42 +(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 4737 +(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 4847 y(assigned)34 b(to)h(also)g(b)s(e)e(assigned)h(to)g +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 4956 y(prop)s(erties,)c(ev)m(en)h(if)f(it)h(is)g -(subsequen)m(tly)f(reset.)150 5121 y Ft(BASH_CMDS)630 -5230 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 5340 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)p -eop end +(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: 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(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 408 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 518 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 628 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 792 y Ft(BASH_COMMAND)630 902 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 1011 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 1121 y(command)30 b(executing)i(at)f(the)f(time)h(of)g(the)g(trap.) -150 1285 y Ft(BASH_COMPAT)630 1395 y Fu(The)i(v)-5 b(alue)34 +b(Shell)30 b(V)-8 b(ariables)2459 b(74)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 +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 +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 1504 y(Shopt)40 +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 1614 y(and)31 +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 1724 y(\(e.g.,)39 b(42\))f(corresp)s(onding)d(to)i(the)f(desired)f +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 1833 y(unset)k(or)g(set)h(to)g(the)g(empt)m(y)f(string,)j +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 -1943 y(for)i(the)h(curren)m(t)f(v)m(ersion.)72 b(If)40 +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 2052 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 2162 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 2271 +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 -2381 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 2491 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 -2655 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 2765 +(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 2874 y(script.)41 +(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(86.)150 -3039 y Ft(BASH_EXECUTION_STRING)630 3148 y Fu(The)f(command)g(argumen)m +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 -3313 y Ft(BASH_LINENO)630 3422 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 3532 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 3641 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 3751 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 -3861 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 4025 y Ft(BASH_LOADABLES_PATH)630 4134 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 4244 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 4408 y Ft(BASH_REMATCH)630 4518 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 -4628 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 -4737 y(page)e(11\).)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 -4847 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 4956 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 5121 y Ft(BASH_SOURCE)630 -5230 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 -5340 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)p eop end +b(is)g(read-only)-8 b(.)p eop end %%Page: 75 81 TeXDict begin 75 80 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(75)630 299 y(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 408 y(called)32 -b(from)d Ft(${BASH_SOURCE[$i+1]})150 573 y(BASH_SUBSHELL)630 -682 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 -792 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 956 -y Ft(BASH_VERSINFO)630 1066 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(93\))h -(whose)f(mem)m(b)s(ers)630 1176 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 1285 y(arra)m(y)e(mem)m(b)s(ers)e -(are)i(as)g(follo)m(ws:)630 1450 y Ft(BASH_VERSINFO[0])1110 -1559 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 1724 y Ft(BASH_VERSINFO[1])1110 -1833 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 1998 y Ft(BASH_VERSINFO[2])1110 -2107 y Fu(The)f(patc)m(h)h(lev)m(el.)630 2271 y Ft(BASH_VERSINFO[3]) -1110 2381 y Fu(The)f(build)f(v)m(ersion.)630 2545 y Ft -(BASH_VERSINFO[4])1110 2655 y Fu(The)h(release)i(status)e(\(e.g.,)j -Fr(b)s(eta1)7 b Fu(\).)630 2819 y Ft(BASH_VERSINFO[5])1110 -2929 y Fu(The)30 b(v)-5 b(alue)31 b(of)f Ft(MACHTYPE)p -Fu(.)150 3093 y Ft(BASH_VERSION)630 3203 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 -3367 y Ft(BASH_XTRACEFD)630 3477 y Fu(If)f(set)h(to)h(an)e(in)m(teger)i +b(Shell)30 b(V)-8 b(ariables)2459 b(75)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 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 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(93\))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 3587 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 3696 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 3806 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 3915 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 4025 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 4134 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 4244 y(standard)30 b(error)g(b)s(eing)f(closed.)150 -4408 y Ft(CHILD_MAX)630 4518 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 4628 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 4737 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 -4847 y(minim)m(um)30 b(v)-5 b(alue)30 b(is)h(system-dep)s(enden)m(t.) -150 5011 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 5121 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 5230 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 5340 -y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)p eop end +Fu(option)j(is)f(enabled)h(\(see)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(COMP_CWORD)630 -408 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 518 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 628 y(grammable)36 -b(completion)g(facilities)i(\(see)e(Section)g(8.6)g([Programmable)g -(Completion],)630 737 y(page)31 b(131\).)150 883 y Ft(COMP_LINE)630 -993 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 1103 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 -1212 y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(131\).)150 -1358 y Ft(COMP_POINT)630 1468 y Fu(The)25 b(index)g(of)h(the)g(curren)m +b(Shell)30 b(V)-8 b(ariables)2459 b(76)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 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 +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(131\).)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 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 1468 +y(Section)k(8.6)h([Programmable)f(Completion],)g(page)g(131\).)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 1577 y(command.)40 b(If)27 b(the)h(curren)m(t)g +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 1687 y(the)i(v)-5 b(alue)30 b(of)g(this)g(v)-5 +(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 -1797 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 1906 +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(131\).)150 2052 y Ft(COMP_TYPE)630 -2162 y Fu(Set)c(to)h(an)f(in)m(teger)h(v)-5 b(alue)28 +(Completion],)h(page)f(131\).)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 2271 y(caused)e(a)h(completion)h(function)e(to)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 2381 y(listing)35 +(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 -2491 y(w)m(ord)22 b(completion,)k(`)p Ft(@)p Fu(',)f(to)e(list)g +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 2600 y(men)m(u)i(completion.)41 +(`)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 -2710 y(commands)32 b(in)m(v)m(ok)m(ed)i(b)m(y)e(the)g(programmable)h +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 -2819 y([Programmable)e(Completion],)h(page)f(131\).)150 -2966 y Ft(COMP_KEY)96 b Fu(The)29 b(k)m(ey)i(\(or)g(\014nal)e(k)m(ey)i +3075 y([Programmable)e(Completion],)h(page)f(131\).)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 3075 y(function.)150 3221 -y Ft(COMP_WORDBREAKS)630 3331 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 3440 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 3550 y(prop)s(erties,)d(ev)m(en)h(if)f(it)h(is)g -(subsequen)m(tly)f(reset.)150 3696 y Ft(COMP_WORDS)630 -3806 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 -3915 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 -4025 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 4134 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 4244 y(grammable)e(Completion],)g(page)g(131\).)150 -4390 y Ft(COMPREPLY)630 4500 y Fu(An)37 b(arra)m(y)h(v)-5 +(8.6)g([Pro-)630 4500 y(grammable)e(Completion],)g(page)g(131\).)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 4609 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 4719 y(tion)g(8.6)g([Programmable)g(Completion],) +(y)h(\(see)f(Sec-)630 4975 y(tion)g(8.6)g([Programmable)g(Completion],) h(page)f(131\).)51 b(Eac)m(h)34 b(arra)m(y)g(elemen)m(t)h(con)m(tains) -630 4829 y(one)c(p)s(ossible)f(completion.)150 4975 y +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 5084 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 -5230 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 5340 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.)p +(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: 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(Assigning)30 -b(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 -408 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 518 y(and)37 b(remo)m(v)m(e)h(directories.)63 +b(Shell)30 b(V)-8 b(ariables)2459 b(77)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 628 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 -737 y(subsequen)m(tly)d(reset.)150 896 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 1005 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 1115 y(line)d(editing.)150 1273 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 -1383 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(98\).)150 -1541 y Ft(EPOCHREALTIME)630 1650 y Fu(Eac)m(h)38 b(time)f(this)g +1602 y(tion)c(6.11)h([Bash)f(POSIX)e(Mo)s(de],)i(page)g(98\).)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 1760 y(since)f(the)g(Unix)f(Ep)s(o)s(c)m(h)g(as) +(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 1870 y(\(see)42 b(the)g(do)s(cumen)m(tation)g +(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 1979 y(Ep)s(o)s(c)m(h\).)82 +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 2089 y(unset,)30 +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 2247 y Ft(EPOCHSECONDS)630 -2357 y Fu(Eac)m(h)38 b(time)f(this)g(parameter)h(is)f(referenced,)i(it) +(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 -2466 y(since)e(the)g(Unix)f(Ep)s(o)s(c)m(h)g(\(see)i(the)f(do)s(cumen)m +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 -2576 y Fu(for)41 b(the)g(de\014nition)g(of)h(Ep)s(o)s(c)m(h\).)73 +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 2685 y Ft(EPOCHSECONDS)27 b Fu(is)j(unset,)g(it)g(loses)h(its) +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 2795 y(reset.)150 2953 y Ft(EUID)288 b Fu(The)30 +(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 3112 y Ft(EXECIGNORE)630 3221 y Fu(A)29 b(colon-separated)h +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 3331 y(page)j(32\))g(de\014ning)e(the)h +(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 3440 y Ft(PATH)p Fu(.)k(Files)22 +(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 3550 y(executable)j(\014les)e(for)g(the)h +(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 3660 y Fu(lo)s(okup.)56 b(This)35 b(do)s(es)g(not)h +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 -3769 y(F)-8 b(ull)42 b(pathnames)e(in)h(the)g(command)g(hash)f(table)i +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 -3879 y(Use)30 b(this)f(v)-5 b(ariable)30 b(to)g(ignore)g(shared)f +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 3988 y(but)36 b(are)h(not)g(executable)i(\014les.)60 +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 4098 y Ft(extglob)28 b Fu(shell)j(option.)150 4256 +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 4415 y Ft(FIGNORE)144 b Fu(A)35 b(colon-separated)i(list)f(of)g +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 4524 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 -4634 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 4792 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 4902 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 5011 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 5121 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 5230 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 5340 y(prop)s(erties,)30 b(ev)m(en)h(if)f(it)h(is)g(subsequen)m -(tly)f(reset.)p eop end +(shell)f(function)g(is)g(executing.)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(This)31 -b(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 -408 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 -518 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 628 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 737 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 -894 y Ft(FUNCNEST)96 b Fu(If)34 b(set)i(to)f(a)h(n)m(umeric)e(v)-5 +b(Shell)30 b(V)-8 b(ariables)2459 b(78)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 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 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 +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 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 1003 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 1113 y(command)i(to)h(ab)s(ort.) -150 1270 y Ft(GLOBIGNORE)630 1379 y Fu(A)k(colon-separated)i(list)f(of) +(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 1489 y(b)m(y)28 b(\014lename)h(expansion.)40 +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 1598 y(also)k(matc)m(hes)g(one)f(of)g(the)g +(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 1708 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 1864 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 -1974 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 2084 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 -2240 y Ft(histchars)630 2350 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 2459 y(tok)m(enization)k(\(see)f(Section)f +(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(142\).)41 -b(The)29 b(\014rst)e(c)m(harac-)630 2569 y(ter)j(is)f(the)g +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)630 2679 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 -2788 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 -2898 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 3007 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 -3117 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 3226 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 3336 y(the)k(shell)f(parser)g(to)h(treat)g +(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 -3493 y Ft(HISTCMD)144 b Fu(The)35 b(history)h(n)m(um)m(b)s(er,)g(or)f +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 3602 y Ft(HISTCMD)28 b Fu(is)h(unset,)h(it)g(loses)h(its)f +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 3759 y Ft(HISTCONTROL)630 3868 y Fu(A)40 +(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 3978 +(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 4088 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 4197 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 -4307 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 4416 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 4526 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 -4635 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 4745 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 4855 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 4964 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 -5074 y(of)31 b Ft(HISTCONTROL)p Fu(.)150 5230 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 5340 y(is)30 b Ft(~/.bash_history)p Fu(.)p -eop end +5340 y(of)31 b Ft(HISTCONTROL)p Fu(.)p eop end %%Page: 79 85 TeXDict begin 79 84 bop 150 -116 a Fu(Chapter)30 b(5:)41 -b(Shell)30 b(V)-8 b(ariables)2459 b(79)150 299 y Ft(HISTFILESIZE)630 -408 y Fu(The)26 b(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 518 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 628 y(than)37 +b(Shell)30 b(V)-8 b(ariables)2459 b(79)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 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 -737 y(also)i(truncated)f(to)h(this)e(size)i(after)g(writing)f(it)g +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 847 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 956 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 1066 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 -1243 y Ft(HISTIGNORE)630 1353 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 1462 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 1572 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 1681 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 1791 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 1901 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 2010 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 2120 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 2229 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 2339 y(the)31 b(setting)g(of)g(the)f -Ft(extglob)f Fu(shell)h(option.)630 2482 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 -2592 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)630 2701 y(these)30 b(t)m(w)m(o)h(patterns,)f +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 2811 y Ft(ignoreboth)p Fu(.)150 -2988 y Ft(HISTSIZE)96 b Fu(The)37 b(maxim)m(um)g(n)m(um)m(b)s(er)e(of)j +(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 3098 y(v)-5 b(alue)26 b(is)g(0,)i(commands)d(are)h +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 3207 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 3317 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 3494 y Ft(HISTTIMEFORMAT)630 -3603 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 3713 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 3823 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 3932 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 4042 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 4219 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 4328 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 4438 +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 4548 +(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 4657 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 4767 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 4876 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 4986 y(is)f(cleared.)150 5163 y -Ft(HOSTNAME)96 b Fu(The)30 b(name)g(of)h(the)f(curren)m(t)h(host.)150 -5340 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.)p eop end +(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: 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(IGNOREEOF)630 -408 y Fu(Con)m(trols)27 b(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 518 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 628 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 737 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 847 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 -956 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 1108 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 1218 y -Ft(~/.inputrc)p Fu(.)150 1369 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 1479 -y(with)i(a)h(v)-5 b(ariable)31 b(starting)g(with)f Ft(LC_)p -Fu(.)150 1631 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 1740 y(a)i(lo)s(cale)h(category)-8 -b(.)150 1892 y Ft(LC_COLLATE)630 2002 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 2111 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 2221 y(alence)e(classes,)h(and)e(collating)i(sequences)e -(within)f(\014lename)h(expansion)g(and)f(pattern)630 -2330 y(matc)m(hing)d(\(see)h(Section)f(3.5.8)h([Filename)g(Expansion],) -e(page)h(31\).)150 2482 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 2592 -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 2701 y(tion)31 -b(3.5.8)h([Filename)g(Expansion],)e(page)h(31\).)150 -2853 y Ft(LC_MESSAGES)630 2963 y Fu(This)25 b(v)-5 b(ariable)27 +b(Shell)30 b(V)-8 b(ariables)2459 b(80)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 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 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 3072 y(ceded)31 b(b)m(y)f(a)h(`)p +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 3224 y Ft(LC_NUMERIC)630 -3334 y Fu(This)f(v)-5 b(ariable)31 b(determines)f(the)h(lo)s(cale)h +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 -3485 y Ft(LC_TIME)144 b Fu(This)25 b(v)-5 b(ariable)26 +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 3637 y Ft(LINENO)192 b Fu(The)30 +(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 3789 y Ft(LINES)240 b +(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 3898 y(selection)c +(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 4008 y(Section)44 +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 4118 -y(receipt)31 b(of)g(a)g Ft(SIGWINCH)p Fu(.)150 4269 y +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 4379 y(standard)k Fm(gnu)g Fr(cpu-compan)m(y-system)h -Fu(format.)150 4531 y Ft(MAILCHECK)630 4640 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 4750 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 4859 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 4969 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 5079 y(equal)31 -b(to)g(zero,)g(the)g(shell)g(disables)f(mail)h(c)m(hec)m(king.)150 -5230 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 5340 y(no)30 b(v)-5 -b(ariable)31 b(name)g(is)f(supplied.)p eop end +b(it)h(is)g(time)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(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 463 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 -573 y Fu(builtin)30 b(command.)150 737 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 902 y Ft(PIPESTATUS)630 1011 -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(93\))h(con)m(taining)g(a)f(list)g(of)g(exit)g -(sta-)630 1121 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 -1230 y(\(whic)m(h)30 b(ma)m(y)h(con)m(tain)h(only)f(a)f(single)h -(command\).)150 1395 y Ft(POSIXLY_CORRECT)630 1504 y +b(Shell)30 b(V)-8 b(ariables)2459 b(81)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(93\))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 -1614 y Fu(mo)s(de)22 b(\(see)h(Section)g(6.11)h([Bash)e(POSIX)f(Mo)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(98\))g(b)s(efore)f(reading)g(the)g(startup)630 -1724 y(\014les,)36 b(as)e(if)h(the)f Ft(--posix)f Fu(in)m(v)m(o)s +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 1833 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 -1970 y Ft(set)47 b(-o)g(posix)630 2107 y Fu(had)30 b(b)s(een)f -(executed.)150 2271 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 -2436 y Ft(PROMPT_COMMAND)630 2545 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 2655 y(eac)m(h)g(primary)d(prompt)g -(\()p Ft($PS1)p Fu(\).)150 2819 y Ft(PROMPT_DIRTRIM)630 -2929 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 3039 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 3148 y(escap)s(es)21 b(\(see)h(Section)f(6.9)h -([Con)m(trolling)g(the)f(Prompt],)h(page)f(96\).)39 b(Characters)21 -b(remo)m(v)m(ed)630 3258 y(are)31 b(replaced)g(with)f(an)g(ellipsis.) -150 3422 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 3532 -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 3696 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 3806 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 3970 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 -4080 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 -4189 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 -4299 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 -4408 y(lev)m(els)e(of)e(indirection.)42 b(The)29 b(default)i(is)f(`)p -Ft(+)h Fu('.)150 4573 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 4737 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 4847 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 -4956 y(erator.)150 5121 y Ft(READLINE_LINE)630 5230 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 -5340 y([Bash)i(Builtins],)g(page)g(50\).)p eop end +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(96\).)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: 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)150 299 y Ft(READLINE_POINT)630 -408 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 518 y(-x)p Fu(')30 b(\(see)h(Section)h(4.2)f([Bash)g -(Builtins],)g(page)g(50\).)150 667 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 816 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 925 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 1035 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 -1144 y(the)31 b(assignmen)m(t.)150 1293 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 1403 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 1512 y(user's)30 b(login)h(shell.)150 1661 y Ft(SHELLOPTS)630 -1771 y Fu(A)g(colon-separated)h(list)f(of)g(enabled)f(shell)h(options.) +b(Shell)30 b(V)-8 b(ariables)2459 b(82)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 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 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 +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 +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 1880 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 1990 y(Set)g(Builtin],)h(page)f(61\).)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 2099 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 2209 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 2318 y(This)30 b(v)-5 b(ariable)31 b(is)f(readonly)-8 -b(.)150 2467 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 2577 y(to)31 b(b)s(e)f(a)h(coun)m(t)g +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 -2725 y Ft(TIMEFORMAT)630 2835 y Fu(The)f(v)-5 b(alue)32 +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 2945 y(ing)37 b(information)f(for)h +(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 3054 y(displa)m(y)m(ed.)k(The)27 +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 3164 y(a)37 +(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 -3273 y(are)31 b(as)f(follo)m(ws;)i(the)f(braces)f(denote)h(optional)h -(p)s(ortions.)630 3422 y Ft(\045\045)384 b Fu(A)30 b(literal)i(`)p -Ft(\045)p Fu('.)630 3571 y Ft(\045[)p Fj(p)p Ft(][l]R)96 -b Fu(The)30 b(elapsed)h(time)g(in)f(seconds.)630 3720 +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 -3868 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 -4017 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 4166 +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 -4275 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 4385 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 4495 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 4624 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 4733 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 4843 y(included.)630 4972 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 5101 y Ft -($'\\nreal\\t\0453lR\\nuser\\t\0453)o(lU\\n)o(sys\\)o(t\0453)o(lS')630 -5230 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 5340 y(added)30 b(when)f(the)i(format)f(string)h(is)f(displa)m -(y)m(ed.)p eop end +b(alue)30 b(3)h(is)g(used.)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(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 408 y Ft(read)31 b Fu(builtin)h(\(see)h(Section)f(4.2)i([Bash)e -(Builtins],)h(page)g(50\).)47 b(The)32 b Ft(select)e -Fu(command)630 518 y(\(see)f(Section)h(3.2.4.2)g([Conditional)g -(Constructs],)e(page)i(11\))f(terminates)g(if)g(input)e(do)s(es)630 -628 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 762 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 872 -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 -981 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 -1141 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 1250 y(temp)s(orary)30 b(\014les)g(for)g(the)h -(shell's)g(use.)150 1410 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 +b(Shell)30 b(V)-8 b(ariables)2459 b(83)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 +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 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 1300 y Ft(read)31 +b Fu(builtin)h(\(see)h(Section)f(4.2)i([Bash)e(Builtins],)h(page)g +(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 +(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 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 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 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 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 2142 +y(temp)s(orary)30 b(\014les)g(for)g(the)h(shell's)g(use.)150 +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: 84 90 TeXDict begin 84 89 bop 3659 -116 a Fu(84)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(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 +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 @@ -14503,15 +14574,15 @@ b(will)g(sa)m(v)m(e)h(the)f(command)f(history)h(to)g(the)g(\014le)g b(expansion)g(\(see)g(Section)g(6.6)g([Aliases],)i(page)e(92\))h(is)e (p)s(erformed)f(b)m(y)h(default.)199 685 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(40\).)154 -823 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 933 y(page)i(40\).)42 b Ft(SIGINT)29 +Ft(SIGTERM)f Fu(\(see)i(Section)g(3.7.6)h([Signals],)g(page)f(41\).)154 +823 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 933 y(page)g(41\).)42 b Ft(SIGINT)29 b Fu(will)h(in)m(terrupt)g(some)h(shell)g(builtins.)154 1071 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 1180 y(option)31 b(has)f(b)s(een)g(enabled) -g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(40\).)154 +g(\(see)h(Section)g(3.7.6)i([Signals],)e(page)g(41\).)154 1319 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 1428 y(Set)g(Builtin],)g(page)g(61\).)154 @@ -15160,8 +15231,8 @@ f(shell)150 3708 y(session.)275 3844 y(After)35 b(the)g(string)g(is)g (command)d(substi-)150 3954 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 4064 y Fu(shell)31 -b(option)f(\(see)i(Section)f(4.2)g([Bash)g(Builtins],)g(page)g(50\).) -150 4308 y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 +b(option)f(\(see)i(Section)f(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g +(65\).)150 4308 y Fs(6.10)68 b(The)45 b(Restricted)h(Shell)150 4467 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 4577 y(in)m(v)m(o)s(cation,) @@ -15185,303 +15256,305 @@ 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)225 299 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 408 y Fu(builtin)e(command.)225 538 y Fq(\017)60 +Ft(hash)330 408 y Fu(builtin)e(command.)225 545 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 667 y Fq(\017)60 +(en)m(vironmen)m(t)g(at)g(startup.)225 682 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 -796 y Fq(\017)60 b Fu(Redirecting)31 b(output)f(using)g(the)h(`)p +819 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 925 y Fq(\017)60 +Fu(')i(redirection)g(op)s(erators.)225 955 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 1054 y Fq(\017)60 +(shell)h(with)f(another)h(command.)225 1092 y Fq(\017)60 b Fu(Adding)24 b(or)g(deleting)i(builtin)e(commands)g(with)h(the)f Ft(-f)g Fu(and)g Ft(-d)g Fu(options)h(to)h(the)e Ft(enable)f -Fu(builtin.)225 1183 y Fq(\017)60 b Fu(Using)31 b(the)f +Fu(builtin.)225 1229 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 1312 y Fq(\017)60 b Fu(Sp)s(ecifying)30 +(builtins.)225 1365 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 -1441 y Fq(\017)60 b Fu(T)-8 b(urning)29 b(o\013)i(restricted)g(mo)s(de) +1502 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 1590 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m -(y)g(startup)f(\014les)g(are)h(read.)275 1719 y(When)j(a)i(command)e +Fu('.)275 1668 y(These)g(restrictions)h(are)g(enforced)f(after)h(an)m +(y)g(startup)f(\014les)g(are)h(read.)275 1807 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 1828 y(Scripts],)25 +(\(see)g(Section)g(3.8)g([Shell)150 1917 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 -2058 y Fs(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150 2218 +2164 y Fs(6.11)68 b(Bash)45 b(POSIX)f(Mo)t(de)150 2324 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 2327 y(Bash)26 b(is)g(running)e(will)j(cause)f +Fu(')37 b(while)150 2433 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 2437 y(the)31 b(b)s(eha)m(vior)f +Fu(standard)g(b)m(y)h(c)m(hanging)150 2543 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 -2566 y(When)f(in)m(v)m(ok)m(ed)h(as)g Ft(sh)p Fu(,)f(Bash)h(en)m(ters)g +2682 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 -2695 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 2824 -y(1.)61 b(When)28 b(a)i(command)e(in)g(the)h(hash)f(table)i(no)e -(longer)h(exists,)h(Bash)f(will)g(re-searc)m(h)h Ft($PATH)d -Fu(to)i(\014nd)330 2934 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 3063 y(2.)61 b(The)42 -b(message)h(prin)m(ted)e(b)m(y)h(the)g(job)g(con)m(trol)i(co)s(de)e -(and)f(builtins)h(when)f(a)h(job)g(exits)h(with)f(a)330 -3172 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199 -3302 y(3.)61 b(The)40 b(message)h(prin)m(ted)f(b)m(y)g(the)h(job)f(con) +2821 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 2959 +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 3096 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 +3206 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 3342 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 3452 y(non-zero)31 b(status)g(is)f(`Done\(status\)'.)199 +3589 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 3411 y(`Stopp)s(ed\()p Fr(signame)5 b Fu(\)',)31 +(is)330 3698 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 3540 y(4.)61 b(Alias)31 b(expansion)g(is)f(alw)m +Ft(SIGTSTP)p Fu(.)199 3835 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 -3669 y(5.)61 b(Reserv)m(ed)40 b(w)m(ords)g(app)s(earing)f(in)h(a)g(con) +3972 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 3779 y(undergo)30 b(alias)h(expansion.)199 3908 y(6.)61 +330 4081 y(undergo)30 b(alias)h(expansion.)199 4218 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 4018 y(enabled,)26 +Ft(!!)p Fu(')h(to)g(`)p Ft(!)p Fu(')h(are)330 4328 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 -4127 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c -Fu(option.)199 4256 y(7.)61 b(The)30 b Fm(posix)g Fu(startup)f(\014les) +4437 y(of)31 b(the)f(setting)i(of)e(the)h Ft(promptvars)c +Fu(option.)199 4574 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 4385 y(8.)61 b(Tilde)30 b(expansion)g(is)f(only)h +f(Bash)g(\014les.)199 4711 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 4495 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h -(on)e(the)h(line.)199 4624 y(9.)61 b(The)30 b(default)g(history)h +(rather)330 4820 y(than)g(on)g(all)i(assignmen)m(t)f(statemen)m(ts)h +(on)e(the)h(line.)154 4957 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 4753 -y(10.)61 b(Redirection)25 b(op)s(erators)f(do)g(not)g(p)s(erform)f +g(v)-5 b(alue)30 b(of)h Ft($HISTFILE)p Fu(\).)154 5094 +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 4863 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 -4992 y(11.)61 b(Redirection)31 b(op)s(erators)g(do)f(not)h(p)s(erform)e -(w)m(ord)h(splitting)h(on)f(the)h(w)m(ord)f(in)g(the)g(redirection.)154 -5121 y(12.)61 b(F)-8 b(unction)35 b(names)g(m)m(ust)f(b)s(e)g(v)-5 -b(alid)35 b(shell)f Ft(name)p Fu(s.)52 b(That)34 b(is,)i(they)f(ma)m(y) -g(not)g(con)m(tain)g(c)m(haracters)330 5230 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 5340 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.)p eop end +330 5203 y(unless)30 b(the)g(shell)h(is)f(in)m(teractiv)m(e.)154 +5340 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.)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(13.)61 -b(F)-8 b(unction)31 b(names)f(ma)m(y)h(not)g(b)s(e)f(the)g(same)h(as)g -(one)f(of)h(the)f Fm(posix)g Fu(sp)s(ecial)h(builtins.)154 -437 y(14.)61 b Fm(posix)30 b Fu(sp)s(ecial)h(builtins)e(are)i(found)e +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 408 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 518 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 651 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 +783 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 -576 y(15.)61 b(When)48 b(prin)m(ting)g(shell)h(function)f +916 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 685 y Ft(function)28 b -Fu(k)m(eyw)m(ord.)154 824 y(16.)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 933 -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 1072 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 1181 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 1291 y Fu(v)-5 b(ariable)31 -b(con)m(trols)h(the)e(format)h(of)g(the)f(timing)h(information.)154 -1429 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 1539 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 1649 -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 -1758 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 -1897 y(19.)61 b(The)29 b(parser)g(do)s(es)g(not)h(recognize)h +(es)f(not)h(prin)m(t)f(the)330 1026 y Ft(function)28 +b Fu(k)m(eyw)m(ord.)154 1158 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 +1268 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 1401 +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 1510 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 +1620 y Fu(v)-5 b(ariable)31 b(con)m(trols)h(the)e(format)h(of)g(the)f +(timing)h(information.)154 1752 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 +1862 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 +1972 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 2081 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 +2214 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 2006 y(`)p Ft(-)p Fu('.)154 -2145 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 2323 y(`)p Ft(-)p Fu('.)154 +2456 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 2254 y(ev)m(en)g(if)f(the)h -Ft(histexpand)d Fu(option)i(is)h(enabled.)154 2393 y(21.)61 +(double-quoted)g(string,)330 2566 y(ev)m(en)g(if)f(the)h +Ft(histexpand)d Fu(option)i(is)h(enabled.)154 2698 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 2502 y(errors)30 b(are)h(those)f(listed)h(in)f +b(The)24 b(fatal)330 2808 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 2612 y(options,)43 b(redirection)d(errors,)i +(passing)e(incorrect)330 2917 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 2721 y(command)30 b(name,)h(and)f(so)g(on.)154 -2860 y(22.)61 b(A)31 b(non-in)m(teractiv)m(e)j(shell)d(exits)h(with)e +(preceding)f(the)330 3027 y(command)30 b(name,)h(and)f(so)g(on.)154 +3160 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 2969 y(when)38 b(no)h(command)g(name)g(follo)m +(error)e(o)s(ccurs)330 3269 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 3079 y(error)30 +b(v)-5 b(ariable)40 b(assignmen)m(t)330 3379 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 3217 -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 3512 +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 3327 y(in)g(an)g(assignmen)m(t)i(statemen)m(t)g +(o)s(ccurs)330 3621 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 3437 y(command.)154 3575 y(24.)61 +(other)h(simple)330 3731 y(command.)154 3863 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 3685 y Fu(statemen)m(t)32 b(or)f(the)f(selection)i(v)-5 +Ft(for)330 3973 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 3823 y(25.)61 b(Non-in)m(teractiv)m(e) +(readonly)h(v)-5 b(ariable.)154 4106 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 -3961 y(26.)61 b(Non-in)m(teractiv)m(e)41 b(shells)d(exit)h(if)f(a)g +4238 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 4071 y(in)m(v)-5 b(alid)31 b(expression.)154 -4209 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 4348 -y(28.)61 b(Non-in)m(teractiv)m(e)27 b(shells)c(exit)i(if)e(there)h(is)f +(an)330 4348 y(in)m(v)-5 b(alid)31 b(expression.)154 +4481 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 4613 +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 4457 y Fu(builtins,)30 b(or)g(in)g(a)h +Ft(.)g Fu(or)h Ft(source)330 4723 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 -4596 y(29.)61 b(Pro)s(cess)30 b(substitution)g(is)h(not)f(a)m(v)-5 -b(ailable.)154 4734 y(30.)61 b(While)32 b(v)-5 b(ariable)32 +4855 y(30.)61 b(Pro)s(cess)30 b(substitution)g(is)h(not)f(a)m(v)-5 +b(ailable.)154 4988 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 4844 y(parameters.)154 4982 -y(31.)61 b(When)28 b(expanding)g(the)g(`)p Ft(*)p Fu(')g(sp)s(ecial)h +Ft(?)p Fu(')h(sp)s(ecial)330 5098 y(parameters.)154 5230 +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 5092 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 -5230 y(32.)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 5340 y(after)31 b(the)f(builtin)g(completes.)p +(is)330 5340 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.)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)154 299 y(33.)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 -408 y(after)d(the)f(function)h(returns,)e(as)i(if)f(a)h +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 408 y(after)31 b(the)f(builtin)g(completes.)154 +536 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 646 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 536 y(34.)61 b(The)31 b Ft(command)e Fu(builtin)i(do)s +(executed.)154 774 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 646 y(gumen)m(ts)40 b(from)e(expanding)h +(statemen)m(ts)h(as)f(ar-)330 883 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 756 y(assignmen)m(t)k(builtins) +b(not)i(in)f Fm(posix)f Fu(mo)s(de,)330 993 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 865 y(ceded)31 b(b)m(y)f Ft(command)p -Fu(.)154 993 y(35.)61 b(The)27 b Ft(bg)g Fu(builtin)g(uses)g(the)h +(erties)g(when)g(pre-)330 1103 y(ceded)31 b(b)m(y)f Ft(command)p +Fu(.)154 1230 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 1103 y(whic)m(h)h(do)s(es)g(not)g(include)g +(the)h(bac)m(kground,)330 1340 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 1230 y(36.)61 b(The)23 b(output)f(of)i(`)p +(or)h(previous)g(job.)154 1468 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 -1340 y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 -1468 y(37.)61 b(The)30 b Ft(kill)f Fu(builtin)h(do)s(es)g(not)h(accept) +1577 y(without)30 b(the)h(`)p Ft(SIG)p Fu(')f(pre\014x.)154 +1705 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 -1596 y(38.)61 b(The)38 b Ft(export)f Fu(and)g Ft(readonly)f +1833 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 1705 y(quired)30 b(b)m(y)g Fm(posix)p -Fu(.)154 1833 y(39.)61 b(The)30 b Ft(trap)f Fu(builtin)h(displa)m(ys)g +(format)g(re-)330 1943 y(quired)30 b(b)m(y)g Fm(posix)p +Fu(.)154 2071 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 1961 y(40.)61 b(The)39 b Ft(trap)e Fu(builtin)i(do)s(esn't)g +Fu(.)154 2198 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 2071 y(and)30 b(rev)m(ert)i(the)e +(signal)i(sp)s(eci\014cation)330 2308 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 2180 y(consists)e(solely)g(of)g +(is,)g(unless)f(that)h(argumen)m(t)330 2418 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 -2290 y(for)h(a)g(giv)m(en)h(signal)g(to)f(the)h(original)g(disp)s +2527 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 2418 y(41.)61 b(The)21 b Ft(.)h Fu(and)f +f(argumen)m(t.)154 2655 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 -2527 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 2655 y(42.)61 b(Enabling)21 b Fm(posix)g +2765 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 2892 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 -2765 y(spa)m(wned)27 b(to)i(execute)g(command)e(substitutions)h +3002 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 2874 y(paren)m(t)37 b(shell.)62 +Fu(option)h(from)g(the)330 3112 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 2984 y Fu(option)31 -b(in)f(suc)m(h)g(subshells.)154 3112 y(43.)61 b(When)43 +(enabled,)h(Bash)e(clears)h(the)g Ft(-e)330 3221 y Fu(option)31 +b(in)f(suc)m(h)g(subshells.)154 3349 y(44.)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 -3221 y(leading)31 b(`)p Ft(alias)e Fu(')i(unless)f(the)g -Ft(-p)g Fu(option)h(is)f(supplied.)154 3349 y(44.)61 +3459 y(leading)31 b(`)p Ft(alias)e Fu(')i(unless)f(the)g +Ft(-p)g Fu(option)h(is)f(supplied.)154 3587 y(45.)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 3459 y(names)30 b(and)g(de\014nitions.)154 -3587 y(45.)61 b(When)36 b(the)g Ft(set)g Fu(builtin)g(is)g(in)m(v)m(ok) +(function)330 3696 y(names)30 b(and)g(de\014nitions.)154 +3824 y(46.)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 3696 y(quotes,)26 b(unless)d(they)i +b(v)-5 b(alues)37 b(without)330 3934 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 3806 y(c)m(haracters.)154 -3934 y(46.)61 b(When)35 b(the)g Ft(cd)f Fu(builtin)h(is)g(in)m(v)m(ok)m +g(con)m(tains)i(nonprin)m(ting)330 4043 y(c)m(haracters.)154 +4171 y(47.)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 4043 y Ft($PWD)i Fu(and)h(the)h(directory)f +(constructed)g(from)330 4281 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 4153 y(directory)-8 b(,)32 b Ft(cd)d +(an)f(existing)330 4390 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 4281 y(47.)61 b(The)36 +Fr(ph)m(ysical)j Fu(mo)s(de.)154 4518 y(48.)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 4390 y(ev)m(en)31 b(if)f(it)h(is)g(not)f(ask)m +(directory)-8 b(,)330 4628 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 4518 y(48.)61 b(When)35 b(listing)g(the)g +Ft(-P)e Fu(option.)154 4756 y(49.)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 4628 +(include)g(an)f(indication)i(of)f(whether)f(or)330 4865 y(not)d(a)f(history)h(en)m(try)f(has)g(b)s(een)g(mo)s(di\014ed.)154 -4756 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 4883 y(50.)61 b(The)37 +4993 y(50.)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 5121 y(51.)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 -4993 y(found,)26 b(though)h(the)g(shell)g(will)g(attempt)h(to)g +5230 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 5103 y(found)i(in)h Ft($PATH)p Fu(.)154 -5230 y(51.)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 5340 y(instead)e(of)f(c)m(hec)m -(king)i Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)p eop +g(\014le)330 5340 y(found)i(in)h Ft($PATH)p Fu(.)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(52.)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 408 y(instead)e(of)f(c)m(hec)m(king)i +Ft($VISUAL)d Fu(and)g Ft($EDITOR)p Fu(.)154 543 y(53.)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 -408 y(gumen)m(ts)35 b(to)g Ft(echo)e Fu(as)i(options.)54 +653 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 518 y(con)m(v)m(erted.)154 -653 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 762 y(con)m(v)m(erted.)154 +897 y(54.)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 787 y(54.)61 b(The)39 +Fu(and)g Ft(-f)f Fu(options.)154 1031 y(55.)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 897 y Fu(builtin)c(and)h(cause)g(it)h(to)f(return)f +Ft(wait)330 1141 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 1006 y(c)m(hild)31 b(that)g(exits.)154 -1141 y(55.)61 b(The)27 b Ft(read)f Fu(builtin)g(ma)m(y)i(b)s(e)e(in)m +(for)f(eac)m(h)330 1250 y(c)m(hild)31 b(that)g(exits.)154 +1385 y(56.)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 1250 y(receiv)m(es)41 +(een)f(set.)40 b(If)27 b(Bash)330 1494 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 -1360 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)154 -1494 y(56.)61 b(Bash)27 b(remo)m(v)m(es)h(an)e(exited)i(bac)m(kground)e +1604 y Fu(returns)29 b(an)h(exit)i(status)e(greater)i(than)e(128.)154 +1738 y(57.)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 1604 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)g(to)h(obtain) -g(it.)275 1763 y(There)j(is)g(other)h Fm(posix)f Fu(b)s(eha)m(vior)h +(after)330 1848 y(the)k Ft(wait)e Fu(builtin)h(is)g(used)g(to)h(obtain) +g(it.)275 2007 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 1873 y Fm(posix)d Fu(mo)s(de.)40 -b(Sp)s(eci\014cally:)199 2007 y(1.)61 b(The)30 b Ft(fc)f +(en)i(when)d(in)150 2117 y Fm(posix)d Fu(mo)s(de.)40 +b(Sp)s(eci\014cally:)199 2252 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 -2117 y(rather)g(than)g(defaulting)h(directly)g(to)g Ft(ed)p +2361 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 2252 y(2.)61 b(As)29 b(noted)g(ab)s(o)m(v)m(e,)i +Fu(is)h(unset.)199 2496 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 2361 -y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 2521 y(Bash)c(can)g(b)s(e)f +(enabled)h(for)g(the)g Ft(echo)f Fu(builtin)330 2605 +y(to)j(b)s(e)f(fully)g(conforman)m(t.)275 2765 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 -2630 y(strict-posix-default)c Fu(to)27 b Ft(configure)e +2874 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 2740 y(page)31 b(148\).)p eop end +b(eatures],)150 2984 y(page)31 b(149\).)p eop end %%Page: 102 108 TeXDict begin 102 107 bop 3614 -116 a Fu(102)150 299 y Fp(7)80 b(Job)54 b(Con)l(trol)150 518 y Fu(This)25 @@ -16176,545 +16249,545 @@ b(Command)29 b(Line)i(Editing)2062 b(111)630 299 y Ft 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 +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 -5121 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 5230 y(emacs)g(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 5340 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)p eop end +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: 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(escap)s(e)24 -b(sequences)h(is)e(a)m(v)-5 b(ailable.)41 b(Use)25 b(the)f(`)p +b(Command)29 b(Line)i(Editing)2062 b(112)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 408 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 518 +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 628 y(default)31 -b(is)f(`)p Ft(@)p Fu('.)630 778 y Ft(enable-bracketed-paste)1110 -888 y Fu(When)24 b(set)h(to)h(`)p Ft(On)p Fu(',)g(Readline)f(will)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 -998 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 1107 +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 1217 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 1326 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 1477 y Ft(enable-keypad)1110 1587 +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 1696 +(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 1806 y(The)j(default)g(is)h(`) -p Ft(off)p Fu('.)630 1956 y Ft(enable-meta-key)1110 2066 +(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 2176 +(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 2285 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 2395 y(default)31 b(is)f(`)p Ft(on)p Fu('.)630 -2545 y Ft(expand-tilde)1110 2655 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 2765 y(w)m(ord)i(completion.)42 -b(The)30 b(default)g(is)h(`)p Ft(off)p Fu('.)630 2915 -y Ft(history-preserve-point)1110 3025 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 3134 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 3244 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 -3354 y(is)30 b(`)p Ft(off)p Fu('.)630 3504 y Ft(history-size)1110 -3614 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 3724 +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 3833 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 -3943 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 -4052 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 4162 +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 4271 -y(b)s(e)c(set)h(to)g(500.)630 4422 y Ft(horizontal-scroll-mode)1110 -4532 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 4641 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 4751 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 4861 +(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 4970 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 +(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: 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(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 +b(Command)29 b(Line)i(Editing)2062 b(113)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(108\).)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(108\).)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 +1577 y(incremen)m(tal)c(searc)m(h.)630 1760 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 +(for)g(k)m(ey)g(binding)f(com-)1110 1870 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(,)i 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 1708 y Ft(vi-insert)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 -1817 y(synon)m(ym\);)g Ft(emacs)39 b Fu(is)i(equiv)-5 +2198 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 +b(default)1110 2308 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 +Fu(v)-5 b(ariable)52 b(also)1110 2418 y(a\013ects)32 +b(the)e(default)h(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: 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)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 +b(Command)29 b(Line)i(Editing)2062 b(114)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)24 +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 4756 +(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)1110 4865 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 4975 y(v)-5 b(alue)31 -b(is)f(`)p Ft(off)p Fu('.)630 5121 y Ft(skip-completed-text)1110 -5230 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 -5340 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-)p eop -end +h(insertion.)49 b(The)32 b(mo)s(de)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)1110 299 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 408 y(not)41 +b(Command)29 b(Line)i(Editing)2062 b(115)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 518 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 -628 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 -737 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 847 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 956 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 1066 y(is)30 b(`)p Ft(off)p Fu('.)630 1215 -y Ft(vi-cmd-mode-string)1110 1325 y Fu(If)j(the)h Fr(sho)m(w-mo)s +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 1435 y(pla)m(y)m(ed)24 b(immediately)g(b)s(efore)f(the) +(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 -1544 y(vi)32 b(editing)h(mo)s(de)f(is)g(activ)m(e)j(and)c(in)h(command) +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 -1654 y(panded)26 b(lik)m(e)i(a)f(k)m(ey)h(binding,)e(so)i(the)f +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 -1763 y(pre\014xes)34 b(and)g(bac)m(kslash)i(escap)s(e)g(sequences)f(is) +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 1873 y(and)23 b(`)p Ft(\\2)p Fu(')h(escap)s(es)h(to)f(b)s +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 -1983 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 2092 +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 2242 y Ft(vi-ins-mode-string)1110 -2351 y Fu(If)j(the)h Fr(sho)m(w-mo)s(de-in-prompt)h Fu(v)-5 +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 -2461 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 2570 y(vi)35 +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 2680 y(panded)26 +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 2790 y(pre\014xes)34 b(and)g(bac)m +(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 2899 y(and)23 +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 3009 +(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 3118 +(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 3268 y Ft(visible-stats)1110 3377 +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 -3487 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 3636 -y(Key)f(Bindings)630 3746 y(The)41 b(syn)m(tax)i(for)f(con)m(trolling)h +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 3856 y(need)27 b(to)i(\014nd)d(the)i(name)f(of) +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 3965 y(sections)37 b(con)m(tain)g(tables)g +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 4075 y(and)30 b(a)h(short)f(description)g(of)h(what)f -(the)g(command)h(do)s(es.)630 4204 y(Once)36 b(y)m(ou)g(kno)m(w)g(the)g +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 4314 y(\014le)e(the)g(name)f(of)h(the)g(k)m(ey)g(y)m +(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 4423 y(the)f(name)h(of)f(the)g(command.)46 b(There)32 +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 4533 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 4643 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 4752 y(comfortable.)630 -4882 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 -4991 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 5121 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 5230 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 5340 y(Builtins],)31 b(page)g(50.)p +(what)h(y)m(ou)g(\014nd)e(most)630 5340 y(comfortable.)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)630 299 y Fr(k)m(eyname)5 -b Fu(:)42 b Fr(function-name)35 b Fu(or)c Fr(macro)1110 -408 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:)1350 -543 y Ft(Control-u:)45 b(universal-argument)1350 652 -y(Meta-Rubout:)f(backward-kill-word)1350 762 y(Control-o:)h(">)i -(output")1110 896 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 -1006 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 1115 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 1225 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 1335 y(output)p Fu(')29 b(in)m(to)i(the)g(line\).)1110 -1469 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 1579 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 1688 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 -1847 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 1957 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 2066 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 2176 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 2286 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 2395 y(recognized.)1350 -2530 y Ft("\\C-u":)46 b(universal-argument)1350 2639 -y("\\C-x\\C-r":)f(re-read-init-file)1350 2749 y("\\e[11~":)g("Function) -h(Key)g(1")1110 2883 y Fu(In)64 b(the)g(ab)s(o)m(v)m(e)i(example,)74 +b(Command)29 b(Line)i(Editing)2062 b(116)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:)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 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 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 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 +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 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 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 -2993 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 3102 +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 -3212 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 3371 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 3480 y(k)m(ey)i(sequences:)630 -3640 y Fj(\\C-)336 b Fu(con)m(trol)32 b(pre\014x)630 -3799 y Fj(\\M-)336 b Fu(meta)31 b(pre\014x)630 3958 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 -4117 y Fj(\\\\)384 b Fu(bac)m(kslash)630 4276 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 -4435 y Fj(\\')384 b Ft(')p Fu(,)30 b(a)h(single)g(quote)g(or)f(ap)s -(ostrophe)630 4594 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 4704 y(escap)s(es)j(is)f(a)m(v)-5 b(ailable:)630 -4863 y Ft(\\a)384 b Fu(alert)31 b(\(b)s(ell\))630 5022 -y Ft(\\b)384 b Fu(bac)m(kspace)630 5181 y Ft(\\d)g Fu(delete)630 -5340 y Ft(\\f)g Fu(form)30 b(feed)p eop end +(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: 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 Ft(\\n)384 -b Fu(newline)630 459 y Ft(\\r)g Fu(carriage)32 b(return)630 -619 y Ft(\\t)384 b Fu(horizon)m(tal)32 b(tab)630 779 -y Ft(\\v)384 b Fu(v)m(ertical)32 b(tab)630 939 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 1049 y(three)c(digits\))630 1209 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 1318 y Fu(\(one)31 b(or)f(t)m(w)m(o)i(hex)e(digits\))630 -1478 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 -1588 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 1697 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 1807 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(Command)29 b(Line)i(Editing)2062 b(117)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 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 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 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 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 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 1917 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 2051 y Ft("\\C-x\\\\":)45 -b("\\\\")150 2251 y Fk(8.3.2)63 b(Conditional)41 b(Init)g(Constructs) -150 2398 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 -2508 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 2617 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 -2778 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 2887 y(terminal)37 b(b)s(eing)f(used,)h(or)f(the)h +(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 2997 y(after)30 b(an)m(y)g(comparison)g(op)s(erator,)g(extends)f +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 -3106 y(noted,)i(no)f(c)m(haracters)i(are)f(required)e(to)i(isolate)i -(it.)630 3267 y Ft(mode)288 b Fu(The)30 b Ft(mode=)e +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 3376 y(line)44 b(is)f(in)g Ft(emacs)f +(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 3486 y(with)c(the)h(`)p Ft(set)29 b(keymap)p +(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 -3595 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 3705 y(starting)f(out)g -(in)f Ft(emacs)f Fu(mo)s(de.)630 3865 y Ft(term)288 b +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 3974 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 4084 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 4194 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 4303 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 4413 y Ft(sun-cmd)p Fu(,)c(for)h(instance.) -630 4573 y Ft(version)144 b Fu(The)44 b Ft(version)f +(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 4682 y(sp)s(eci\014c)c(Readline)i(v)m(ersions.)74 +(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 -4792 y(Readline)25 b(v)m(ersion.)39 b(The)23 b(set)h(of)g(comparison)h +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 -4902 y(`)p Ft(==)p Fu('\),)33 b(`)p Ft(!=)p Fu(',)f(`)p +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)1110 5011 y(the)j(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 -5121 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 5230 -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 5340 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)p -eop end +(on)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)1110 299 y(v)m(ersion)39 +b(Command)29 b(Line)i(Editing)2062 b(118)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 408 y(sets)31 +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 543 y Ft($if)47 -b(version)f(>=)h(7.0)1350 653 y(set)g(show-mode-in-prompt)42 -b(on)1350 762 y($endif)630 922 y(application)1110 1031 +(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 1141 y(tings.)39 +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 1250 y(name)p Fu(,)g(and)e(y)m(ou)g(can)h(test)g +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 1360 y(bind)32 b(k)m(ey)h(sequences)g(to)h(functions)e +(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 1469 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 1579 y(the)e(curren)m(t)f -(or)g(previous)g(w)m(ord)g(in)g(Bash:)1350 1714 y Ft($if)47 -b(Bash)1350 1823 y(#)g(Quote)g(the)g(current)f(or)h(previous)e(word) -1350 1933 y("\\C-xq":)h("\\eb\\"\\ef\\"")1350 2042 y($endif)630 -2202 y(variable)96 b Fu(The)33 b Fr(v)-5 b(ariable)39 +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 2311 y(v)-5 b(ariables)32 b(and)f(v)-5 +(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 2421 y(`)p Ft(==)p Fu(',)49 b(and)44 +(`)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 2531 y(comparison)25 +(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 2640 y(from)33 b(the)h(v)-5 b(alue)35 +(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 2750 y(and)i(b)s(o)s(olean)g(v)-5 +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 2859 y(tested)46 +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 -2969 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 3103 y -Ft($if)47 b(editing-mode)d(==)k(emacs)1350 3213 y(set)f -(show-mode-in-prompt)42 b(on)1350 3323 y($endif)150 3482 +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 -3641 y Ft($else)240 b Fu(Commands)29 b(in)h(this)h(branc)m(h)e(of)i +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 3801 y Ft($include)96 b Fu(This)43 b(directiv)m(e)i(tak)m +(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 3910 y(and)38 b(bindings)f(from)h(that)i(\014le.)65 +(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 4020 y Ft(/etc/inputrc)p Fu(:)870 4154 y Ft($include)46 -b(/etc/inputrc)150 4354 y Fk(8.3.3)63 b(Sample)41 b(Init)g(File)150 -4501 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 4610 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: 119 125 TeXDict begin 119 124 bop 150 -116 a Fu(Chapter)30 b(8:)41 @@ -16997,25 +17070,25 @@ b(b)m(y)f(some)h(terminals,)i(and)d(suc)m(h)g(a)h(binding)e(is)i (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)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 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 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 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 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 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 +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 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 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 +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 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 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 @@ -17237,7 +17310,7 @@ 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 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 1012 y(pansion],)30 b(page)h(22\).)150 1217 +(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) @@ -17658,347 +17731,368 @@ Fr(w)m(ord)j Fu(will)630 3586 y(b)s(e)d(displa)m(y)m(ed.)630 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 3828 y(generated.)150 3981 y Ft(complete)870 4113 y(complete)46 b([-abcdefgjksuv])d([-o)k Fj(comp-option)p -Ft(])e([-DE])h([-A)h Fj(action)p Ft(])f([-)870 4222 y(G)h -Fj(globpat)p Ft(])f([-W)h Fj(wordlist)p Ft(])870 4332 -y([-F)g Fj(function)p Ft(])e([-C)i Fj(command)p Ft(])f([-X)h -Fj(filterpat)p Ft(])870 4441 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 -4551 y(complete)g(-pr)g([-DE])h([)p Fj(name)f Ft(...)o(])630 -4682 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 4792 y(is)30 b(supplied,)e(or)i(if)g(no)f -(options)h(are)g(supplied,)f(existing)h(completion)h(sp)s +Ft(])e([-DEI])h([-A)h Fj(action)p Ft(])e([-)870 4222 +y(G)i Fj(globpat)p Ft(])870 4332 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 4441 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 4551 y(complete)g(-pr)g([-DEI])h([)p Fj(name)f +Ft(...)o(])630 4682 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 4792 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 4902 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 5011 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 5121 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 5230 y(actions)27 -b(should)e(apply)g(to)i(the)f(\\default")h(command)e(completion;)k -(that)e(is,)g(completion)630 5340 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.) -p eop end +b(are)h(supplied,)g(all)g(com-)630 5121 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)630 5230 y(actions)c(should)e(apply)g +(to)i(the)f(\\default")h(command)e(completion;)k(that)e(is,)g +(completion)630 5340 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.)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(The)25 -b 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 408 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 542 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 -651 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 761 -y(page)31 b(131\).)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 894 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 1003 y Ft(-G)p +b(Command)29 b(Line)i(Editing)2062 b(134)630 299 y(The)24 +b 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 408 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 518 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 628 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 +737 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 847 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 956 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 1066 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 1176 y(the)31 b(option.)630 1313 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 1422 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 +1532 y(page)31 b(131\).)630 1669 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 1778 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 1113 y(quoted)28 b(to)h(protect)g +Fu(options\))h(should)f(b)s(e)630 1888 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.)630 1270 y Ft(-o)i -Fj(comp-option)1110 1379 y Fu(The)c Fr(comp-option)i +Fu(builtin)h(is)h(in)m(v)m(ok)m(ed.)630 2052 y Ft(-o)i +Fj(comp-option)1110 2162 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 1489 y(ior)g(b)s(ey)m(ond)f(the)g(simple)h +(b)s(eha)m(v-)1110 2271 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 1598 y(b)s(e)j(one)g(of:)1110 1755 y -Ft(bashdefault)1590 1864 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g -(default)f(Bash)h(completions)g(if)g(the)1590 1974 y(compsp)s(ec)i -(generates)i(no)e(matc)m(hes.)1110 2131 y Ft(default)144 +b Fu(ma)m(y)1110 2381 y(b)s(e)j(one)g(of:)1110 2545 y +Ft(bashdefault)1590 2655 y Fu(P)m(erform)d(the)h(rest)f(of)h(the)g +(default)f(Bash)h(completions)g(if)g(the)1590 2765 y(compsp)s(ec)i +(generates)i(no)e(matc)m(hes.)1110 2929 y Ft(default)144 b Fu(Use)22 b(Readline's)g(default)g(\014lename)g(completion)g(if)g -(the)g(comp-)1590 2240 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110 -2397 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 2506 y(generates)32 -b(no)e(matc)m(hes.)1110 2663 y Ft(filenames)1590 2772 +(the)g(comp-)1590 3039 y(sp)s(ec)30 b(generates)i(no)e(matc)m(hes.)1110 +3203 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 3313 y(generates)32 +b(no)e(matc)m(hes.)1110 3477 y Ft(filenames)1590 3587 y Fu(T)-8 b(ell)40 b(Readline)f(that)h(the)f(compsp)s(ec)f(generates)j -(\014lenames,)1590 2882 y(so)29 b(it)h(can)f(p)s(erform)f(an)m(y)h +(\014lenames,)1590 3696 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 -2992 y(adding)d(a)h(slash)f(to)h(directory)g(names)f(quoting)h(sp)s -(ecial)g(c)m(har-)1590 3101 y(acters,)39 b(or)d(suppressing)f(trailing) -i(spaces\).)59 b(This)35 b(option)i(is)1590 3211 y(in)m(tended)30 +3806 y(adding)22 b(a)g(slash)g(to)h(directory)f(names,)i(quoting)f(sp)s +(ecial)f(c)m(har-)1590 3915 y(acters,)39 b(or)d(suppressing)f(trailing) +i(spaces\).)59 b(This)35 b(option)i(is)1590 4025 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 3320 y Ft(-F)p Fu(.)1110 3477 y Ft(noquote)144 b +1590 4134 y Ft(-F)p Fu(.)1110 4299 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 3587 y(are)j(\014lenames)f(\(quoting)h -(\014lenames)g(is)f(the)h(default\).)1110 3743 y Ft(nosort)192 +(ords)f(if)h(they)1590 4408 y(are)j(\014lenames)f(\(quoting)h +(\014lenames)g(is)f(the)h(default\).)1110 4573 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 3853 y(alphab)s(etically)-8 -b(.)1110 4009 y Ft(nospace)144 b Fu(T)-8 b(ell)40 b(Readline)g(not)g +(ossible)g(completions)1590 4682 y(alphab)s(etically)-8 +b(.)1110 4847 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 -4119 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110 -4275 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 4385 y(ated,)g +4956 y(w)m(ords)30 b(completed)h(at)g(the)g(end)f(of)g(the)h(line.)1110 +5121 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 5230 y(ated,)g (directory)f(name)g(completion)i(is)d(attempted)i(and)f(an)m(y)1590 -4495 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h -(other)g(actions.)630 4651 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 4761 y(completions:)1110 -4917 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 -5074 y Ft(arrayvar)96 b Fu(Arra)m(y)31 b(v)-5 b(ariable)31 -b(names.)1110 5230 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 -5340 y(Readline)h(Commands],)f(page)h(121\).)p eop end +5340 y(matc)m(hes)j(are)e(added)g(to)h(the)g(results)f(of)g(the)h +(other)g(actions.)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)1110 299 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 408 y(as)31 b Ft(-b)p -Fu(.)1110 581 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 753 y Ft(directory)1590 862 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 1035 y Ft(disabled)96 b Fu(Names)31 b(of)g(disabled)f(shell)g -(builtins.)1110 1207 y Ft(enabled)144 b Fu(Names)31 b(of)g(enabled)f -(shell)g(builtins.)1110 1379 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 1489 y(\014ed)d(as)g -Ft(-e)p Fu(.)1110 1661 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 1833 y Ft(function)96 b Fu(Names)31 b(of)g(shell)f -(functions.)1110 2005 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 2178 y Ft(helptopic)1590 2287 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 2397 y(tion)31 b(4.2)g([Bash)g(Builtins],)g(page)g(50\).) -1110 2569 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 -2679 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 2788 y(V)-8 b(ariables],)32 -b(page)f(72\).)1110 2960 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 3070 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 3242 -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 3414 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 3587 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 -3759 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 -3868 y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f -(61\).)1110 4041 y Ft(shopt)240 b Fu(Shell)40 b(option)g(names)g(as)g +b(Command)29 b(Line)i(Editing)2062 b(135)630 299 y Ft(-A)30 +b 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 +408 y(completions:)1110 570 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 732 y Ft(arrayvar)96 b Fu(Arra)m(y)31 +b(v)-5 b(ariable)31 b(names.)1110 894 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 1004 y(Readline)h(Commands],)f(page)h(121\).)1110 +1166 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 1276 +y(as)31 b Ft(-b)p Fu(.)1110 1438 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 1600 y Ft(directory)1590 1709 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 1871 y Ft(disabled)96 b Fu(Names)31 +b(of)g(disabled)f(shell)g(builtins.)1110 2033 y Ft(enabled)144 +b Fu(Names)31 b(of)g(enabled)f(shell)g(builtins.)1110 +2195 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 +2305 y(\014ed)d(as)g Ft(-e)p Fu(.)1110 2467 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 2629 y Ft(function)96 b Fu(Names)31 +b(of)g(shell)f(functions.)1110 2791 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 2953 y Ft(helptopic)1590 3062 +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 3172 y(tion)31 +b(4.2)g([Bash)g(Builtins],)g(page)g(50\).)1110 3334 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 3444 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 3553 y(V)-8 b(ariables],)32 b(page)f(72\).)1110 +3715 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 +3825 y(\014ed)f(as)g Ft(-j)p Fu(.)1110 3987 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 +4149 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 4311 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 4473 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 4582 +y(\(see)31 b(Section)h(4.3.1)g([The)e(Set)g(Builtin],)i(page)f(61\).) +1110 4744 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 -4150 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(50\).) -1110 4322 y Ft(signal)192 b Fu(Signal)31 b(names.)1110 -4495 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 4667 y Ft(user)288 +4854 y(\(see)31 b(Section)h(4.2)f([Bash)g(Builtins],)g(page)g(50\).) +1110 5016 y Ft(signal)192 b Fu(Signal)31 b(names.)1110 +5178 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 5340 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 4839 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 4949 y Ft(-v)p -Fu(.)630 5121 y Ft(-C)30 b Fj(command)1110 5230 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 5340 y(used)e(as)g(the)h(p)s(ossible)f -(completions.)p eop end +(as)i Ft(-u)p Fu(.)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)630 299 y Ft(-F)30 -b Fj(function)1110 408 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 518 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 628 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 737 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 -847 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 956 y(page)30 b(131\).)42 -b(When)29 b(it)h(\014nishes,)e(the)h(p)s(ossible)g(completions)h(are)g -(retriev)m(ed)1110 1066 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 -1240 y Ft(-G)30 b Fj(globpat)1110 1350 y Fu(The)39 b(\014lename)h -(expansion)g(pattern)g Fr(globpat)j Fu(is)d(expanded)f(to)h(generate) -1110 1459 y(the)31 b(p)s(ossible)e(completions.)630 1633 -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 -1743 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 -1917 y Ft(-S)g Fj(suffix)66 b Fr(su\016x)26 b Fu(is)20 +b(Command)29 b(Line)i(Editing)2062 b(136)1110 299 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 +408 y Ft(-v)p Fu(.)630 573 y Ft(-C)30 b Fj(command)1110 +682 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 792 y(used)e(as)g(the)h +(p)s(ossible)f(completions.)630 956 y Ft(-F)g Fj(function)1110 +1066 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 1176 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 1285 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 +1395 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 1504 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 +1614 y(page)30 b(131\).)42 b(When)29 b(it)h(\014nishes,)e(the)h(p)s +(ossible)g(completions)h(are)g(retriev)m(ed)1110 1724 +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 1888 y Ft(-G)30 b Fj(globpat)1110 +1998 y Fu(The)39 b(\014lename)h(expansion)g(pattern)g +Fr(globpat)j Fu(is)d(expanded)f(to)h(generate)1110 2107 +y(the)31 b(p)s(ossible)e(completions.)630 2271 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 +2381 y(all)c(other)g(options)g(ha)m(v)m(e)g(b)s(een)f(applied.)630 +2545 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 2027 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 -2201 y Ft(-W)h Fj(wordlist)1110 2310 y Fu(The)24 b Fr(w)m(ordlist)k +(other)g(options)1110 2655 y(ha)m(v)m(e)32 b(b)s(een)d(applied.)630 +2819 y Ft(-W)h Fj(wordlist)1110 2929 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 2420 y(as)36 +Ft(IFS)e Fu(sp)s(ecial)h(v)-5 b(ariable)1110 3039 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 2529 y(completions)c(are)e +(expanded.)57 b(The)35 b(p)s(ossible)1110 3148 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 2639 y(w)m(ord)f(b)s(eing)g(completed.)630 -2813 y Ft(-X)g Fj(filterpat)1110 2923 y Fr(\014lterpat)d +(matc)m(h)i(the)1110 3258 y(w)m(ord)f(b)s(eing)g(completed.)630 +3422 y Ft(-X)g Fj(filterpat)1110 3532 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 3032 y(the)30 b(list)f(of)h(p)s +b(It)25 b(is)g(applied)f(to)1110 3641 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 3142 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 3251 +1110 3751 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 3861 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 3361 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 3535 y(The)35 +1110 3970 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 4134 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 -3645 y(than)h Ft(-p)g Fu(or)g Ft(-r)f Fu(is)h(supplied)f(without)i(a)f +4244 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 -3754 y(remo)m(v)m(e)32 b(a)e(completion)i(sp)s(eci\014cation)f(for)f(a) +4354 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 3864 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s -(eci\014cation.)150 4038 y Ft(compopt)870 4180 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 4321 y Fu(Mo)s(dify)33 +630 4463 y(or)f(an)h(error)f(o)s(ccurs)g(adding)g(a)g(completion)i(sp)s +(eci\014cation.)150 4628 y Ft(compopt)870 4765 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 4902 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 -4431 y(curren)m(tly-executing)46 b(completion)f(if)f(no)f +5011 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 4541 y(giv)m(en,)30 b(displa)m(y)e(the)g +Fr(option)p Fu(s)h(are)630 5121 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 4650 y(The)f(p)s(ossible) +Fu(or)27 b(the)i(curren)m(t)e(completion.)630 5230 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 -4760 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 -4869 y(\\default")j(command)f(completion;)i(that)f(is,)g(completion)g -(attempted)g(on)f(a)g(command)630 4979 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 5089 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 5198 y(is,)k(completion)g(attempted)h -(on)e(a)h(blank)f(line.)630 5340 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(.)p eop end +5340 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)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)630 299 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 -408 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 518 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 772 -y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 -931 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 -1041 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 1151 y(command)h(using)g Ft(complete)e(-F)p -Fu(.)275 1294 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 1403 y(example)41 +b(Command)29 b(Line)i(Editing)2062 b(137)630 299 y(\\default")33 +b(command)f(completion;)i(that)f(is,)g(completion)g(attempted)g(on)f(a) +g(command)630 408 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 518 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 +628 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 +737 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 847 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 +956 y(command)30 b(name)h(completion.)630 1091 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 1200 +y(b)s(oth)30 b(tak)m(e)i(precedence)e(o)m(v)m(er)i Ft(-I)630 +1335 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 1444 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 1554 y(or)e(an)h(output)f(error)g(o)s(ccurs.)150 +1794 y Fs(8.8)68 b(A)44 b(Programmable)j(Completion)f(Example)150 +1954 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 2063 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 2173 y(command)h(using)g +Ft(complete)e(-F)p Fu(.)275 2307 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 2417 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 1513 +(completion.)73 b(This)39 b(function)h(uses)150 2526 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 1623 y Ft(COMP_WORDS)c Fu(arra)m(y)i(v)-5 +b(can)g(also)g(use)g(the)150 2636 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 1766 y(The)42 +(the)h Ft(COMP_CWORD)c Fu(v)-5 b(ariable.)275 2770 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 1875 y(adding)25 b(only)h(the)g(things)g(that)g(the)g(Bash)g +150 2880 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 1985 y(expansion)22 b(\(see)h(Section)g(3.5.2)g +(names:)38 b(tilde)150 2989 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 2095 y(whic)m(h)21 b(is)h(describ)s +e Fr($CDP)-8 b(A)g(TH)p Fu(,)150 3099 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 -2204 y(for)31 b(the)h Ft(cdable_vars)d Fu(shell)i(option)h(\(see)h +3208 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 2314 y(cd)30 b Fu(mo)s(di\014es)g(the)h(v)-5 +b Ft(_comp_)150 3318 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 -2423 y(con)m(taining)i(spaces)g(and)e(tabs)h({)g Ft(compgen)e +3428 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 2533 y(line.)275 2676 y(P)m(ossible)24 b(completions)h(go)g +(p)s(er)150 3537 y(line.)275 3671 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 -2786 y(elemen)m(t.)42 b(The)30 b(programmable)g(completion)i(system)e +3781 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 -2895 y(the)h(function)f(returns.)390 3039 y Ft(#)47 b(A)h(completion)d -(function)g(for)i(the)g(cd)g(builtin)390 3148 y(#)g(based)g(on)g(the)g +3891 y(the)h(function)f(returns.)390 4025 y Ft(#)47 b(A)h(completion)d +(function)g(for)i(the)g(cd)g(builtin)390 4134 y(#)g(based)g(on)g(the)g (cd)g(completion)e(function)h(from)g(the)h(bash_completion)d(package) -390 3258 y(_comp_cd\(\))390 3367 y({)581 3477 y(local)i(IFS=$')g -(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 3587 y(local)g(cur)h -(_skipdot)f(_cdpath)581 3696 y(local)g(i)i(j)f(k)581 -3915 y(#)g(Tilde)g(expansion,)e(with)h(side)h(effect)f(of)h(expanding)f -(tilde)g(to)h(full)g(pathname)581 4025 y(case)g("$2")f(in)581 -4134 y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 4244 -y(*\))286 b(cur=$2)46 b(;;)581 4354 y(esac)581 4573 y(#)h(no)h(cdpath)e -(or)h(absolute)e(pathname)h(--)h(straight)f(directory)f(completion)581 -4682 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g("$cur")f(==)h -(@\(./*|../*|/*\))d(]];)j(then)772 4792 y(#)g(compgen)f(prints)g(paths) -h(one)f(per)h(line;)g(could)f(also)h(use)g(while)f(loop)772 -4902 y(IFS=$'\\n')772 5011 y(COMPREPLY=\()f($\(compgen)g(-d)i(--)g -("$cur"\))f(\))772 5121 y(IFS=$')g(\\t\\n')581 5230 y(#)h -(CDPATH+directories)c(in)k(the)g(current)f(directory)f(if)j(not)e(in)i -(CDPATH)581 5340 y(else)p eop end +390 4244 y(_comp_cd\(\))390 4354 y({)581 4463 y(local)i(IFS=$')g +(\\t\\n')190 b(#)47 b(normalize)f(IFS)581 4573 y(local)g(cur)h +(_skipdot)f(_cdpath)581 4682 y(local)g(i)i(j)f(k)581 +4902 y(#)g(Tilde)g(expansion,)e(which)h(also)h(expands)f(tilde)g(to)h +(full)g(pathname)581 5011 y(case)g("$2")f(in)581 5121 +y(\\~*\))190 b(eval)46 b(cur="$2")g(;;)581 5230 y(*\))286 +b(cur=$2)46 b(;;)581 5340 y(esac)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)772 299 y Ft(IFS=$'\\n')772 -408 y(_skipdot=false)772 518 y(#)47 b(preprocess)e(CDPATH)h(to)i -(convert)d(null)i(directory)e(names)i(to)g(.)772 628 -y(_cdpath=${CDPATH/#:/.:})772 737 y(_cdpath=${_cdpath//::/:.)o(:})772 -847 y(_cdpath=${_cdpath/\045:/:.})772 956 y(for)g(i)g(in)g -(${_cdpath//:/$'\\n'};)c(do)963 1066 y(if)k([[)g($i)g(-ef)g(.)h(]];)f -(then)f(_skipdot=true;)e(fi)963 1176 y(k="${#COMPREPLY[@]}")963 -1285 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do) -1154 1395 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory) -963 1504 y(done)772 1614 y(done)772 1724 y($_skipdot)f(||)i +b(Command)29 b(Line)i(Editing)2062 b(138)581 408 y Ft(#)47 +b(no)h(cdpath)e(or)h(absolute)e(pathname)h(--)h(straight)f(directory)f +(completion)581 518 y(if)i([[)g(-z)g("${CDPATH:-}")e(]])i(||)g([[)g +("$cur")f(==)h(@\(./*|../*|/*\))d(]];)j(then)772 628 +y(#)g(compgen)f(prints)g(paths)h(one)f(per)h(line;)g(could)f(also)h +(use)g(while)f(loop)772 737 y(IFS=$'\\n')772 847 y(COMPREPLY=\()f +($\(compgen)g(-d)i(--)g("$cur"\))f(\))772 956 y(IFS=$')g(\\t\\n')581 +1066 y(#)h(CDPATH+directories)c(in)k(the)g(current)f(directory)f(if)j +(not)e(in)i(CDPATH)581 1176 y(else)772 1285 y(IFS=$'\\n')772 +1395 y(_skipdot=false)772 1504 y(#)f(preprocess)e(CDPATH)h(to)i +(convert)d(null)i(directory)e(names)i(to)g(.)772 1614 +y(_cdpath=${CDPATH/#:/.:})772 1724 y(_cdpath=${_cdpath//::/:.)o(:})772 +1833 y(_cdpath=${_cdpath/\045:/:.})772 1943 y(for)g(i)g(in)g +(${_cdpath//:/$'\\n'};)c(do)963 2052 y(if)k([[)g($i)g(-ef)g(.)h(]];)f +(then)f(_skipdot=true;)e(fi)963 2162 y(k="${#COMPREPLY[@]}")963 +2271 y(for)j(j)g(in)g($\()g(compgen)f(-d)h(--)h("$i/$cur")d(\);)i(do) +1154 2381 y(COMPREPLY[k++]=${j#$i/})375 b(#)48 b(cut)f(off)f(directory) +963 2491 y(done)772 2600 y(done)772 2710 y($_skipdot)f(||)i (COMPREPLY+=\()e($\(compgen)g(-d)i(--)g("$cur"\))f(\))772 -1833 y(IFS=$')g(\\t\\n')581 1943 y(fi)581 2162 y(#)h(variable)f(names)g +2819 y(IFS=$')g(\\t\\n')581 2929 y(fi)581 3148 y(#)h(variable)f(names)g (if)h(appropriate)e(shell)i(option)f(set)h(and)f(no)i(completions)581 -2271 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c -(-eq)k(0)g(]];)g(then)772 2381 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g -("$cur"\))f(\))581 2491 y(fi)581 2710 y(return)g(0)390 -2819 y(})275 2973 y Fu(W)-8 b(e)31 b(install)g(the)g(completion)h +3258 y(if)f(shopt)f(-q)i(cdable_vars)c(&&)k([[)f(${#COMPREPLY[@]})c +(-eq)k(0)g(]];)g(then)772 3367 y(COMPREPLY=\()e($\(compgen)g(-v)i(--)g +("$cur"\))f(\))581 3477 y(fi)581 3696 y(return)g(0)390 +3806 y(})275 3952 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 3126 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f -(and)i(append)f(slashes)g(to)h(directories;)390 3236 +Fu(:)390 4098 y Ft(#)47 b(Tell)g(readline)f(to)h(quote)f(appropriate)f +(and)i(append)f(slashes)g(to)h(directories;)390 4208 y(#)g(use)g(the)g(bash)g(default)f(completion)f(for)i(other)f -(arguments)390 3345 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h -(bashdefault)e(-F)i(_comp_cd)f(cd)150 3499 y Fu(Since)33 +(arguments)390 4317 y(complete)g(-o)h(filenames)e(-o)i(nospace)f(-o)h +(bashdefault)e(-F)i(_comp_cd)f(cd)150 4463 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 -3608 y(sev)m(eral)43 b(other)g(options)f(to)h(tell)g(Bash)f(and)f +4573 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 3718 y(tells)j(Readline)g(that)g(the)f(p)s(ossible)g +b Fu(option)150 4682 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 3828 y(appropriately)-8 b(.)53 b(That)34 +(quoted)150 4792 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 3937 y(determine)i(are)g(directories) +g(to)h(\014lenames)g(it)g(can)150 4902 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 4047 +(extend)f Ft(_comp_cd)e Fu(to)i(app)s(end)f(a)150 5011 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 4156 y(directories\).)45 b(The)31 +(completions)h(are)150 5121 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 4266 y(directory)c +(end)f(a)i(space)g(c)m(haracter)h(to)f(the)150 5230 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 b(The)27 b Ft(-o)j(bashdefault)25 b Fu(option)j(brings)f(in)h(the)150 -4376 y(rest)h(of)f(the)h Ft(")p Fu(Bash)f(default)p Ft(")h +5340 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 4485 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 4595 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 4704 y(Section)31 -b(3.5.8)h([Filename)g(Expansion],)e(page)i(31\),)f(and)f(so)h(on.)275 -4858 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 4967 y(completion)32 b(for)e(a)h -Ft(cd)e Fu(command.)275 5121 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 5230 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 5230 28 4 v 39 w(completion)i(pro)5 b(ject.)150 -5340 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)p eop end +(to)h(the)g(default)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)150 299 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 408 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 543 y(An)54 -b(older)h(v)m(ersion)h(of)f(the)g(bash)p 1532 543 28 -4 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 653 y Ft(examples/complete)26 b -Fu(sub)s(directory)-8 b(.)p eop end +b(Command)29 b(Line)i(Editing)2062 b(139)150 299 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 +408 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 518 y(Section)31 b(3.5.8)h([Filename)g(Expansion],)e(page)i +(32\),)f(and)f(so)h(on.)275 653 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 762 y(completion)32 +b(for)e(a)h Ft(cd)e Fu(command.)275 897 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 1006 +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 1006 +28 4 v 39 w(completion)i(pro)5 b(ject.)150 1116 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 +1225 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 1335 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 +1469 y(An)54 b(older)h(v)m(ersion)h(of)f(the)g(bash)p +1532 1469 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 1579 y Ft(examples/complete)26 +b Fu(sub)s(directory)-8 b(.)p eop end %%Page: 140 146 TeXDict begin 140 145 bop 3614 -116 a Fu(140)150 299 y Fp(9)80 b(Using)53 b(History)g(In)l(teractiv)l(ely)150 @@ -18216,187 +18310,203 @@ m(ts)f(to)h(a)g(previous)f(command)g(in)m(to)i(the)e(curren)m(t)150 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)30 b(it)h(in)m(to)h(w)m(ords,)e -(and)g(is)g(p)s(erformed)f(on)i(eac)m(h)g(line)g(individually)f -(without)h(taking)g(quoting)g(on)150 3751 y(previous)f(lines)g(in)m(to) -i(accoun)m(t.)275 3888 y(History)27 b(expansion)f(tak)m(es)i(place)f -(in)f(t)m(w)m(o)i(parts.)39 b(The)26 b(\014rst)g(is)g(to)h(determine)g -(whic)m(h)f(line)h(from)f(the)150 3998 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 4107 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 4217 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 4327 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 4436 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 4546 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 -4655 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 -4765 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 -4874 y(closing)j(double)f(quote)h(in)f(a)h(double-quoted)g(string.)275 -5011 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 -5121 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 5230 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 5340 -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)p -eop end +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: 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)150 -299 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 408 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 518 y(for)31 b(correction.)43 +b(Using)30 b(History)h(In)m(teractiv)m(ely)1925 b(143)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 -628 y(history)25 b(expansion)g(will)g(do)g(b)s(efore)g(using)f(it.)40 +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 737 y(to)36 b(add)f(commands)g +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 847 y(they)c(are)f(a)m(v)-5 +(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 -980 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 1090 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 1199 y(page)32 +(Section)f(5.2)i([Bash)e(V)-8 b(ariables],)150 2003 y(page)32 b(72\).)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 -1309 y(writing)e(the)h(history)f(\014le.)150 1505 y Fk(9.3.1)63 -b(Ev)m(en)m(t)39 b(Designators)150 1652 y Fu(An)32 b(ev)m(en)m(t)j +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 -1762 y(reference)e(is)f(absolute,)i(ev)m(en)m(ts)f(are)g(relativ)m(e)i +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 -1919 y Ft(!)432 b Fu(Start)34 b(a)f(history)h(substitution,)g(except)g +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 -2028 y(the)i(line,)g(`)p Ft(=)p Fu(')g(or)f(`)p Ft(\()p +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 2138 y Fu(builtin\).)150 -2294 y Ft(!)p Fj(n)384 b Fu(Refer)30 b(to)i(command)e(line)g -Fr(n)p Fu(.)150 2451 y Ft(!-)p Fj(n)336 b Fu(Refer)30 +(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 -2608 y Ft(!!)384 b Fu(Refer)30 b(to)i(the)e(previous)g(command.)40 +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 2765 y Ft(!)p Fj(string)144 b Fu(Refer)25 b(to)h(the)f(most)h +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 2874 y(list)31 b(starting)g(with)f -Fr(string)p Fu(.)150 3031 y Ft(!?)p Fj(string)p Ft([?])630 -3141 y Fu(Refer)25 b(to)h(the)f(most)h(recen)m(t)g(command)f(preceding) +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 -3250 y(list)32 b(con)m(taining)i Fr(string)p Fu(.)45 +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 3360 -y(immediately)g(b)m(y)e(a)h(newline.)150 3516 y Ft(^)p -Fj(string1)p Ft(^)p Fj(string2)p Ft(^)630 3626 y Fu(Quic)m(k)h +(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 3736 +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 3892 y Ft(!#)384 +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 -4089 y Fk(9.3.2)63 b(W)-10 b(ord)41 b(Designators)150 -4236 y Fu(W)-8 b(ord)27 b(designators)h(are)g(used)e(to)i(select)h +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 -4345 y(sp)s(eci\014cation)38 b(from)e(the)h(w)m(ord)f(designator.)61 +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 4455 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 -4565 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 4674 y(single)h(spaces.)275 -4807 y(F)-8 b(or)31 b(example,)150 4964 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 -5074 y(mand)30 b(is)g(rep)s(eated)g(in)g(toto.)150 5230 -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 -5340 y(to)31 b Ft(!$)p Fu(.)p eop end +(the)g(b)s(eginning)f(of)h(the)g(line,)g(with)g(the)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)150 -299 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 -408 y(letters)j Ft(fi)p Fu(.)275 556 y(Here)e(are)h(the)g(w)m(ord)f -(designators:)150 704 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 851 y Fj(n)432 -b Fu(The)30 b Fr(n)p Fu(th)g(w)m(ord.)150 999 y Ft(^)432 -b Fu(The)30 b(\014rst)f(argumen)m(t;)j(that)f(is,)f(w)m(ord)g(1.)150 -1146 y Ft($)432 b Fu(The)30 b(last)h(argumen)m(t.)150 -1294 y Ft(\045)432 b Fu(The)30 b(w)m(ord)g(matc)m(hed)h(b)m(y)f(the)h +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 -1441 y Fj(x)p Ft(-)p Fj(y)336 b Fu(A)30 b(range)h(of)g(w)m(ords;)f(`)p +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 1589 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 -1698 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 1808 y(that)j(case.)150 1955 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 -2103 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 2250 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 2360 y(is)d(used)g(as)h(the)f(ev)m(en)m(t.)150 -2547 y Fk(9.3.3)63 b(Mo)s(di\014ers)150 2694 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 -2804 y(mo)s(di\014ers,)h(eac)m(h)j(preceded)e(b)m(y)g(a)h(`)p -Ft(:)p Fu('.)150 2951 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 3099 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 -3246 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 3394 y Ft(e)432 b Fu(Remo)m(v)m(e)32 b(all)f(but)f(the)h -(trailing)g(su\016x.)150 3541 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 -3689 y Ft(q)432 b Fu(Quote)31 b(the)f(substituted)g(w)m(ords,)g -(escaping)h(further)e(substitutions.)150 3837 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 3946 y(and)d(newlines.)150 4094 y Ft(s/)p Fj(old)p -Ft(/)p Fj(new)p Ft(/)630 4203 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 4313 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 -4422 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 4532 -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 4642 y(the)31 b(input)e(line.)150 -4789 y Ft(&)432 b Fu(Rep)s(eat)31 b(the)f(previous)g(substitution.)150 -4937 y Ft(g)150 5046 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 5156 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 5303 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 +630 5340 y(and)d(newlines.)p eop end %%Page: 145 151 -TeXDict begin 145 150 bop 3614 -116 a Fu(145)150 299 +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 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: 146 152 +TeXDict begin 146 151 bop 3614 -116 a Fu(146)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 @@ -18466,12 +18576,12 @@ 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(146,)j(for)c(more)i +b(or)27 b(Multiple)h(Arc)m(hitectures],)i(page)d(147,)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: 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(If)53 b(y)m(ou)h(need)f(to) +%%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)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 @@ -18520,7 +18630,7 @@ 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(145\).)47 +(Section)f(10.1)i([Basic)f(Installation],)i(page)e(146\).)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 @@ -18555,9 +18665,9 @@ 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)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(--prefix=)p +%%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(--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 @@ -18624,9 +18734,9 @@ 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 5340 y(--help)p Fu(')29 b(prin)m(ts)h(the)g(complete)i(list.)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 Fs(10.8)68 +%%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 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 @@ -18693,23 +18803,24 @@ g Fr(PREFIX)9 b Fu(/)p Ft(include)32 b Fu(and)i(the)630 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 4958 y(than)h(c)m(hanging)h(run-time)f(features.)150 -5121 y Ft(--enable-largefile)630 5230 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 5340 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-)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)630 299 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 408 y(if)k(the)h(op)s -(erating)g(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 +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: 150 156 +TeXDict begin 150 155 bop 150 -116 a Fu(Chapter)30 b(10:)41 +b(Installing)31 b(Bash)2356 b(150)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 @@ -18739,7 +18850,7 @@ b(supp)s(ort)f(for)h Ft(csh)p Fu(-lik)m(e)h(history)g(substitution)f (142\).)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 3706 y([Brace)32 b(Expansion],)e(page)h(22,)h +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 @@ -18761,9 +18872,9 @@ m(ell)g(as)g(shell)f(builtins)g(and)g(functions)g(to)h(b)s(e)e(timed.) 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 5340 y(tional)c (Constructs],)e(page)h(11\).)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 Ft(--enable-cond-regexp)630 +%%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)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 518 y(op)s(erator)25 b(in)f(the)h @@ -18804,7 +18915,7 @@ 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 3769 y(under)29 b(Section)i(3.5.8.1)i([P)m(attern)e(Matc)m(hing],)i -(page)e(32.)150 3915 y Ft(--enable-extended-glob-d)o(efau)o(lt)630 +(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 4134 y(tion)31 b(4.3.2)h([The)e(Shopt)g(Builtin],)h(page)g @@ -18825,9 +18936,9 @@ b(con)m(trols)j(the)630 4975 y(b)s(eha)m(vior)21 b(of)g(c)m(haracter)h (ys)f(help)h(on)f(shell)h(builtins)f(and)h(v)-5 b(ariables)25 b(\(see)630 5340 y(Section)31 b(4.2)h([Bash)e(Builtins],)i(page)f (50\).)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)150 299 y Ft(--enable-history)630 +%%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-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 @@ -18843,10 +18954,10 @@ 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(33\).)150 1870 +([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 2089 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 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 @@ -18887,9 +18998,9 @@ b(ma)m(y)g(need)630 4975 y(to)c(disable)g(this)f(if)g(y)m(our)h 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 5340 y(page)31 b(98\).)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 +%%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-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 @@ -18912,8 +19023,8 @@ 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: 153 159 -TeXDict begin 153 158 bop 3614 -116 a Fu(153)150 299 +%%Page: 154 160 +TeXDict begin 154 159 bop 3614 -116 a Fu(154)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 @@ -18943,8 +19054,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: 154 160 -TeXDict begin 154 159 bop 3614 -116 a Fu(154)150 141 +%%Page: 155 161 +TeXDict begin 155 160 bop 3614 -116 a Fu(155)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 @@ -19030,10 +19141,10 @@ 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(11\).)p eop end -%%Page: 155 161 -TeXDict begin 155 160 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 156 162 +TeXDict begin 156 161 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(156)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) @@ -19042,7 +19153,7 @@ 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(22\))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(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 @@ -19105,7 +19216,7 @@ 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 @@ -19121,10 +19232,10 @@ Fu(v)-5 b(ariable)45 b(is)f(used)f(to)i(split)f(only)g(the)g(results)g 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: 156 162 -TeXDict begin 156 161 bop 150 -116 a Fu(App)s(endix)29 +%%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(156)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(157)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 @@ -19134,11 +19245,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(31\).)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(32\).)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 @@ -19151,20 +19262,20 @@ Fu(builtin,)i(and)e(th)m(us)330 1468 y(useful)i(recursiv)m(e)g 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(39\).)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(33\).)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(33\).)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 @@ -19175,11 +19286,11 @@ 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(33\).)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(33\).)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 @@ -19214,10 +19325,10 @@ 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: 157 163 -TeXDict begin 157 162 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(157)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(158)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 @@ -19311,10 +19422,10 @@ Fu(builtin)i(\(see)h(Section)g(4.1)g([Bourne)f(Shell)g(Builtins],)j 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: 158 164 -TeXDict begin 158 163 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(158)330 299 y(are)40 b(executed)g(after)g +b(The)f(Bourne)g(Shell)1258 b(159)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 @@ -19396,10 +19507,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: 159 165 -TeXDict begin 159 164 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(159)225 299 y Fq(\017)60 +b(The)f(Bourne)g(Shell)1258 b(160)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) @@ -19430,8 +19541,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: 160 166 -TeXDict begin 160 165 bop 3614 -116 a Fu(160)150 299 +%%Page: 161 167 +TeXDict begin 161 166 bop 3614 -116 a Fu(161)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 @@ -19512,10 +19623,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: 161 167 -TeXDict begin 161 166 bop 150 -116 a Fu(App)s(endix)29 +%%Page: 162 168 +TeXDict begin 162 167 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)330 299 y(under)26 b(this)i(License.)40 b(If)27 +b(162)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 @@ -19606,10 +19717,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: 162 168 -TeXDict begin 162 167 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(162)330 299 y(Y)-8 b(ou)39 b(ma)m(y)f(cop)m(y)h(and)e(distribute)h +b(163)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 @@ -19699,10 +19810,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: 163 169 -TeXDict begin 163 168 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(163)510 299 y(b)s(e)31 b(listed)h(in)f(the)g(History)h(section)g(of)g +b(164)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 @@ -19781,10 +19892,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: 164 170 -TeXDict begin 164 169 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(164)330 299 y(titles)37 b(to)f(the)f(list)h(of)g(In)m(v)-5 +b(165)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 @@ -19869,10 +19980,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: 165 171 -TeXDict begin 165 170 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(165)199 299 y(7.)61 b(A)m(GGREGA)-8 b(TION)32 b(WITH)e(INDEPENDENT)h +b(166)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 @@ -19957,10 +20068,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: 166 172 -TeXDict begin 166 171 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(166)154 299 y(10.)61 b(FUTURE)30 b(REVISIONS)f(OF)i(THIS)e(LICENSE) +b(167)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 @@ -20024,10 +20135,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: 167 173 -TeXDict begin 167 172 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(167)150 299 y Fs(ADDENDUM:)45 b(Ho)l(w)h(to)f(use)g(this)h(License)f +b(168)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 @@ -20062,8 +20173,8 @@ 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: 168 174 -TeXDict begin 168 173 bop 3614 -116 a Fu(168)150 299 +%%Page: 169 175 +TeXDict begin 169 174 bop 3614 -116 a Fu(169)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 @@ -20220,9 +20331,9 @@ 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(105)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)146 294 y Fs(T)150 410 y Fe(test)11 +%%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(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(47)150 497 @@ -20326,37 +20437,37 @@ 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: 170 176 -TeXDict begin 170 175 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(170)150 299 y Fs(D.3)68 b(P)l(arameter)47 +%%Page: 171 177 +TeXDict begin 171 176 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(171)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(21)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(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(21)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(21)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(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(21)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(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(21)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(21)150 2438 y Fe($@)16 b Fc(:)e(:)f(:)g(:)g(:)g(:)g(:)h(:)f(:)g @@ -20365,17 +20476,17 @@ g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g (:)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(21)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(21)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(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(21)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 @@ -20386,11 +20497,11 @@ 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(21)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(21)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(105)2021 954 y Fs(B)2025 1074 y Fe(BASH)11 b @@ -20410,7 +20521,7 @@ b Fb(73)2025 1429 y Fe(BASH_ARGV0)13 b Fc(:)i(:)e(:)g(:)g(:)h(:)f(:)g g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)27 b Fb(73)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(73)2025 1606 +g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)30 b Fb(74)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(74)2025 1695 y Fe(BASH_COMPAT)10 @@ -20432,7 +20543,7 @@ 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 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(74)2025 2315 y Fe(BASH_SUBSHELL)g Fc(:)13 +g(:)25 b Fb(75)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(75)2025 2403 y Fe(BASH_VERSINFO)25 b Fc(:)13 b(:)g(:)g(:)h(:)f(:)g @@ -20513,12 +20624,12 @@ 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(76)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(D)150 416 y Fe(DIRSTACK)18 +%%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(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(76)150 503 y Fe(disable-completion)7 +(:)g(:)h(:)f(:)32 b Fb(77)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(111)146 791 y Fs(E)150 913 y Fe(echo-control-characters)12 b @@ -20583,7 +20694,7 @@ 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(78)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(78)150 3809 +h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)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(79)150 3899 y Fe(HISTIGNORE)13 @@ -20613,100 +20724,102 @@ y Fe(HOSTNAME)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)32 b Fb(79)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(79)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(80)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(72)2025 512 y Fe(IGNOREEOF)15 b Fc(:)g(:)f(:)f(:)g(:)g(:)g(:)g(:)g +b Fb(72)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(80)2025 -602 y Fe(input-meta)11 b Fc(:)k(:)e(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g +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(112)2025 693 y Fe(INPUTRC)c +h(:)f(:)g(:)g(:)g(:)g(:)26 b Fb(113)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(80)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(113)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(113)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(80)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(80)2025 1839 y Fe(LC_COLLATE)13 +g(:)g(:)h(:)f(:)g(:)35 b Fb(80)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(80)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(113)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(113)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(80)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(80)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(80)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(80)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(80)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(80)2025 1930 y Fe(LC_CTYPE)18 b Fc(:)d(:)e(:)g(:)g(:)g +(:)h(:)27 b Fb(80)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(80)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(80)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(80)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(80)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(80)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(80)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(80)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(72)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(80)2025 3087 y Fe(MAILPATH)18 b Fc(:)d(:)e(:)g(:)g(:)g(:)g(:)h(:)f +h(:)f(:)g(:)35 b Fb(80)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(80)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(80)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(72)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(80)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(113)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(113)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(113)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(114)2025 3628 y Fe(meta-flag)13 b Fc(:)i(:)e(:)h(:)f(:)g(:)g(:)g +Fb(80)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(112)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(81)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(72)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(81)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(72)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(81)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(114)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(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(72)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(80)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(72)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(81)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(113)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(113)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(114)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(114)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(113)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(81)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(72)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(81)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(72)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(81)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(114)p eop end +%%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(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(114)150 497 y Fe(PATH)11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h @@ -20747,10 +20860,10 @@ g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)28 b Fb(81)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(81)150 1892 y Fe(READLINE_LINE)25 +g(:)g(:)g(:)h(:)f(:)20 b Fb(82)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(81)150 1979 y Fe(READLINE_POINT)23 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(82)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(82)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 @@ -20779,7 +20892,7 @@ g(:)h(:)f(:)g(:)g(:)g(:)23 b Fb(82)150 2851 y Fe(show-all-if-ambiguous) g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(114)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(114)2021 675 y Fs(T)2025 +(:)h(:)f(:)g(:)g(:)g(:)37 b Fb(115)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 @@ -20854,9 +20967,9 @@ f(:)g(:)g(:)g(:)g(:)g(:)g(:)34 b Fb(127)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(127)p eop end -%%Page: 173 179 -TeXDict begin 173 178 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(173)150 264 y Fe(complete-into-braces)30 +%%Page: 174 180 +TeXDict begin 174 179 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(174)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(128)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 @@ -20981,9 +21094,9 @@ b(\(C-o\))11 b Fc(:)j(:)f(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f 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(124)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 414 y Fe +%%Page: 175 181 +TeXDict begin 175 180 bop 150 -116 a Fu(App)s(endix)29 +b(D:)i(Indexes)2623 b(175)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(127)150 503 y Fe (possible-completions)30 b(\(M-?\))11 b Fc(:)j(:)f(:)h(:)f(:)g(:)g(:)g @@ -21079,7 +21192,7 @@ 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(91)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(30)150 4923 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(91)150 5010 y(arra)n(ys)h Fc(:)14 b(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g @@ -21090,28 +21203,28 @@ f(:)g(:)g(:)g(:)g(:)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(102)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(145)2025 4829 y(Bash)g(installation)9 +g(:)g(:)26 b Fb(146)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(145)2025 4918 y(Bourne)i(shell)20 b Fc(:)13 b(:)g(:)g(:)g(:)h(:)f +b Fb(146)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 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(22)2025 5095 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: 175 181 -TeXDict begin 175 180 bop 150 -116 a Fu(App)s(endix)29 -b(D:)i(Indexes)2623 b(175)146 294 y Fs(C)150 418 y Fb(command)26 +%%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(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(107)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(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(37)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(140)150 777 y(command)26 b(searc)n(h)16 @@ -21150,7 +21263,7 @@ g(:)h(:)f(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)28 b Fb(7)150 g(:)36 b Fb(133)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(145)150 2033 y(con)n(trol)26 b(op)r(erator)8 b Fc(:)15 +b Fb(146)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 @@ -21164,14 +21277,14 @@ 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(107)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(39)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(91)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(143)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(38)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(40)150 3495 y(expansion)9 @@ -21179,17 +21292,17 @@ 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(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(30)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(22)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(31)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(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(31)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(23)150 4123 y(expressions,)f(arithmetic)13 @@ -21205,7 +21318,7 @@ 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(31)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(102)2025 769 y(functions,)i(shell)9 b @@ -21233,7 +21346,7 @@ 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(109)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(145)2025 2191 y(in)n(teraction,)26 b(readline)7 +g(:)34 b Fb(146)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(106)2025 2280 y(in)n(teractiv)n(e)k(shell)20 b Fc(:)13 b(:)h(:)f(:)g(:)g(:)g(:)g @@ -21263,13 +21376,13 @@ h(:)f(:)g(:)g(:)g(:)g(:)g(:)g(:)h(:)f(:)g(:)g(:)g(:)g(:)21 b Fb(86)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(32)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: 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(N)150 410 y Fb(name)19 +%%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(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 @@ -21289,15 +21402,15 @@ b Fb(24)150 1388 y(parameters)c Fc(:)13 b(:)g(:)g(:)h(:)f(:)g(:)g(:)g 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(20)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(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(31)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(32)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 @@ -21313,7 +21426,7 @@ 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(131)150 2434 y(prompting)17 b Fc(:)c(:)g(:)g(:)h(:)f(:)g(:)g(:)g @@ -21330,7 +21443,7 @@ 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(105)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(33)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 @@ -21358,7 +21471,7 @@ b Fb(87)2025 892 y(signal)13 b Fc(:)h(:)f(:)g(:)g(:)g(:)h(:)f(:)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(40)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(71)2025 1170 y(startup)f(\014les)10 diff --git a/doc/bashref.texi b/doc/bashref.texi index c97e1175c..cb67c8a25 100644 --- a/doc/bashref.texi +++ b/doc/bashref.texi @@ -876,7 +876,9 @@ 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 @@ -1028,7 +1030,8 @@ 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 @@ -1283,7 +1286,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 @@ -1306,13 +1310,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. @@ -1663,8 +1675,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 @@ -1926,6 +1946,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 @@ -1954,11 +1980,11 @@ 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. @@ -4353,8 +4379,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}, @@ -4561,8 +4587,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}, @@ -5617,7 +5643,8 @@ 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 +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 @@ -5630,7 +5657,8 @@ 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 +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 @@ -6073,6 +6101,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_}. @@ -6156,7 +6189,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 @@ -6330,9 +6365,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 @@ -7421,7 +7459,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 @@ -7492,6 +7530,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 diff --git a/doc/builtins.0 b/doc/builtins.0 index 4614dc504..b9a67274f 100644 --- a/doc/builtins.0 +++ b/doc/builtins.0 @@ -210,71 +210,78 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS The return value is true unless an invalid option is supplied, or no matches were generated. - ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEE] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- + ccoommpplleettee [--aabbccddeeffggjjkkssuuvv] [--oo _c_o_m_p_-_o_p_t_i_o_n] [--DDEEII] [--AA _a_c_t_i_o_n] [--GG _g_l_o_b_- _p_a_t] [--WW _w_o_r_d_l_i_s_t] [--FF _f_u_n_c_t_i_o_n] [--CC _c_o_m_m_a_n_d] [--XX _f_i_l_t_e_r_p_a_t] [--PP _p_r_e_f_i_x] [--SS _s_u_f_f_i_x] _n_a_m_e [_n_a_m_e _._._.] - ccoommpplleettee --pprr [--DDEE] [_n_a_m_e ...] + ccoommpplleettee --pprr [--DDEEII] [_n_a_m_e ...] Specify how arguments to each _n_a_m_e should be completed. If the --pp 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 --rr option removes a completion spec- ification for each _n_a_m_e, or, if no _n_a_m_es are supplied, all com- - pletion specifications. The --DD 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 --EE - 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 PPrrooggrraamm-- + pletion specifications. The --DD 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 --EE option + indicates that other supplied options and actions should apply + to ``empty'' command completion; that is, completion attempted + on a blank line. The --II 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 --DD option takes precedence + over --EE, and both take precedence over --II. If any of --DD, --EE, or + --II are supplied, any other _n_a_m_e 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 PPrrooggrraamm-- mmaabbllee CCoommpplleettiioonn. - Other options, if specified, have the following meanings. The - arguments to the --GG, --WW, and --XX options (and, if necessary, the - --PP and --SS options) should be quoted to protect them from expan- + Other options, if specified, have the following meanings. The + arguments to the --GG, --WW, and --XX options (and, if necessary, the + --PP and --SS options) should be quoted to protect them from expan- sion before the ccoommpplleettee builtin is invoked. --oo _c_o_m_p_-_o_p_t_i_o_n - The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp- - spec's behavior beyond the simple generation of comple- + The _c_o_m_p_-_o_p_t_i_o_n controls several aspects of the comp- + spec's behavior beyond the simple generation of comple- tions. _c_o_m_p_-_o_p_t_i_o_n may be one of: bbaasshhddeeffaauulltt Perform the rest of the default bbaasshh completions if the compspec generates no matches. - ddeeffaauulltt Use readline's default filename completion if + ddeeffaauulltt Use readline's default filename completion if the compspec generates no matches. ddiirrnnaammeess - Perform directory name completion if the comp- + Perform directory name completion if the comp- spec generates no matches. ffiilleennaammeess - 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. - nnooqquuoottee Tell readline not to quote the completed words - if they are filenames (quoting filenames is the + nnooqquuoottee Tell readline not to quote the completed words + if they are filenames (quoting filenames is the default). - nnoossoorrtt Tell readline not to sort the list of possible + nnoossoorrtt Tell readline not to sort the list of possible completions alphabetically. - nnoossppaaccee Tell readline not to append a space (the - default) to words completed at the end of the + nnoossppaaccee Tell readline not to append a space (the + default) to words completed at the end of the line. pplluussddiirrss - 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. --AA _a_c_t_i_o_n - The _a_c_t_i_o_n may be one of the following to generate a + The _a_c_t_i_o_n may be one of the following to generate a list of possible completions: aalliiaass Alias names. May also be specified as --aa. aarrrraayyvvaarr Array variable names. bbiinnddiinngg RReeaaddlliinnee key binding names. - bbuuiillttiinn Names of shell builtin commands. May also be + bbuuiillttiinn Names of shell builtin commands. May also be specified as --bb. ccoommmmaanndd Command names. May also be specified as --cc. ddiirreeccttoorryy @@ -282,7 +289,7 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS ddiissaabblleedd Names of disabled shell builtins. eennaabblleedd Names of enabled shell builtins. - eexxppoorrtt Names of exported shell variables. May also be + eexxppoorrtt Names of exported shell variables. May also be specified as --ee. ffiillee File names. May also be specified as --ff. ffuunnccttiioonn @@ -291,17 +298,17 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS hheellppttooppiicc Help topics as accepted by the hheellpp builtin. hhoossttnnaammee - Hostnames, as taken from the file specified by + Hostnames, as taken from the file specified by the HHOOSSTTFFIILLEE shell variable. - jjoobb Job names, if job control is active. May also + jjoobb Job names, if job control is active. May also be specified as --jj. - kkeeyywwoorrdd Shell reserved words. May also be specified as + kkeeyywwoorrdd Shell reserved words. May also be specified as --kk. rruunnnniinngg Names of running jobs, if job control is active. sseerrvviiccee Service names. May also be specified as --ss. - sseettoopptt Valid arguments for the --oo option to the sseett + sseettoopptt Valid arguments for the --oo option to the sseett builtin. - sshhoopptt Shell option names as accepted by the sshhoopptt + sshhoopptt Shell option names as accepted by the sshhoopptt builtin. ssiiggnnaall Signal names. ssttooppppeedd Names of stopped jobs, if job control is active. @@ -310,190 +317,194 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS Names of all shell variables. May also be spec- ified as --vv. --CC _c_o_m_m_a_n_d - _c_o_m_m_a_n_d is executed in a subshell environment, and its + _c_o_m_m_a_n_d is executed in a subshell environment, and its output is used as the possible completions. --FF _f_u_n_c_t_i_o_n - The shell function _f_u_n_c_t_i_o_n is executed in the current - shell environment. When the function is executed, the - first argument ($$11) is the name of the command whose - arguments are being completed, the second argument ($$22) + The shell function _f_u_n_c_t_i_o_n is executed in the current + shell environment. When the function is executed, the + first argument ($$11) is the name of the command whose + arguments are being completed, the second argument ($$22) is the word being completed, and the third argument ($$33) - 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 CCOOMMPPRREE-- + 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 CCOOMMPPRREE-- PPLLYY array variable. --GG _g_l_o_b_p_a_t - The pathname expansion pattern _g_l_o_b_p_a_t is expanded to + The pathname expansion pattern _g_l_o_b_p_a_t is expanded to generate the possible completions. --PP _p_r_e_f_i_x - _p_r_e_f_i_x is added at the beginning of each possible com- + _p_r_e_f_i_x is added at the beginning of each possible com- pletion after all other options have been applied. --SS _s_u_f_f_i_x _s_u_f_f_i_x is appended to each possible completion after all other options have been applied. --WW _w_o_r_d_l_i_s_t - The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS - special variable as delimiters, and each resultant word - is expanded. Shell quoting is honored within _w_o_r_d_l_i_s_t, + The _w_o_r_d_l_i_s_t is split using the characters in the IIFFSS + special variable as delimiters, and each resultant word + is expanded. Shell quoting is honored within _w_o_r_d_l_i_s_t, in order to provide a mechanism for the words to contain - shell metacharacters or characters in the value of IIFFSS. - The possible completions are the members of the resul- + shell metacharacters or characters in the value of IIFFSS. + The possible completions are the members of the resul- tant list which match the word being completed. --XX _f_i_l_t_e_r_p_a_t - _f_i_l_t_e_r_p_a_t is a pattern as used for pathname expansion. + _f_i_l_t_e_r_p_a_t is 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 _f_i_l_t_e_r_p_a_t is removed from the list. - A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this + ated by the preceding options and arguments, and each + completion matching _f_i_l_t_e_r_p_a_t is removed from the list. + A leading !! in _f_i_l_t_e_r_p_a_t negates the pattern; in this case, any completion not matching _f_i_l_t_e_r_p_a_t is removed. - The return value is true unless an invalid option is supplied, - an option other than --pp or --rr is supplied without a _n_a_m_e 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 --pp or --rr is supplied without a _n_a_m_e argu- + ment, an attempt is made to remove a completion specification for a _n_a_m_e for which no specification exists, or an error occurs adding a completion specification. - ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEE] [++oo _o_p_t_i_o_n] [_n_a_m_e] + ccoommppoopptt [--oo _o_p_t_i_o_n] [--DDEEII] [++oo _o_p_t_i_o_n] [_n_a_m_e] Modify completion options for each _n_a_m_e according to the - _o_p_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es - are supplied. If no _o_p_t_i_o_ns are given, display the completion - options for each _n_a_m_e or the current completion. The possible - values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin - described above. The --DD option indicates that the remaining + _o_p_t_i_o_ns, or for the currently-executing completion if no _n_a_m_es + are supplied. If no _o_p_t_i_o_ns are given, display the completion + options for each _n_a_m_e or the current completion. The possible + values of _o_p_t_i_o_n are those valid for the ccoommpplleettee builtin + described above. The --DD 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 --EE 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 --EE option indicates that other + supplied options should apply to ``empty'' command completion; + that is, completion attempted on a blank line. The --II 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 ;; or ||, 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 _n_a_m_e for which no completion specification exists, or an output error occurs. ccoonnttiinnuuee [_n] Resume the next iteration of the enclosing ffoorr, wwhhiillee, uunnttiill, or - sseelleecctt loop. If _n is specified, resume at the _nth enclosing - loop. _n must be >= 1. If _n is greater than the number of - enclosing loops, the last enclosing loop (the ``top-level'' + sseelleecctt loop. If _n is specified, resume at the _nth enclosing + loop. _n must be >= 1. If _n is greater than the number of + enclosing loops, the last enclosing loop (the ``top-level'' loop) is resumed. The return value is 0 unless _n is not greater than or equal to 1. ddeeccllaarree [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] ttyyppeesseett [--aaAAffFFggiillnnrrttuuxx] [--pp] [_n_a_m_e[=_v_a_l_u_e] ...] - Declare variables and/or give them attributes. If no _n_a_m_es are - given then display the values of variables. The --pp option will + Declare variables and/or give them attributes. If no _n_a_m_es are + given then display the values of variables. The --pp option will display the attributes and values of each _n_a_m_e. When --pp is used - with _n_a_m_e arguments, additional options, other than --ff and --FF, - are ignored. When --pp is supplied without _n_a_m_e arguments, it - will display the attributes and values of all variables having + with _n_a_m_e arguments, additional options, other than --ff and --FF, + are ignored. When --pp is supplied without _n_a_m_e 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 --pp, ddeeccllaarree will display the - attributes and values of all shell variables. The --ff option - will restrict the display to shell functions. The --FF option - inhibits the display of function definitions; only the function - name and attributes are printed. If the eexxttddeebbuugg shell option - is enabled using sshhoopptt, the source file name and line number + options are supplied with --pp, ddeeccllaarree will display the + attributes and values of all shell variables. The --ff option + will restrict the display to shell functions. The --FF option + inhibits the display of function definitions; only the function + name and attributes are printed. If the eexxttddeebbuugg shell option + is enabled using sshhoopptt, the source file name and line number where each _n_a_m_e is defined are displayed as well. The --FF option - implies --ff. The --gg option forces variables to be created or + implies --ff. The --gg option forces variables to be created or modified at the global scope, even when ddeeccllaarree 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: - --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss + --aa Each _n_a_m_e is an indexed array variable (see AArrrraayyss above). - --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss + --AA Each _n_a_m_e is an associative array variable (see AArrrraayyss above). --ff Use function names only. --ii The variable is treated as an integer; arithmetic evalua- - tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when + tion (see AARRIITTHHMMEETTIICC EEVVAALLUUAATTIIOONN above) is performed when the variable is assigned a value. - --ll When the variable is assigned a value, all upper-case - characters are converted to lower-case. The upper-case + --ll When the variable is assigned a value, all upper-case + characters are converted to lower-case. The upper-case attribute is disabled. - --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name - reference to another variable. That other variable is - defined by the value of _n_a_m_e. All references, assign- - ments, and attribute modifications to _n_a_m_e, except those - using or changing the --nn attribute itself, are performed - on the variable referenced by _n_a_m_e's value. The nameref + --nn Give each _n_a_m_e the _n_a_m_e_r_e_f attribute, making it a name + reference to another variable. That other variable is + defined by the value of _n_a_m_e. All references, assign- + ments, and attribute modifications to _n_a_m_e, except those + using or changing the --nn attribute itself, are performed + on the variable referenced by _n_a_m_e's value. The nameref attribute cannot be applied to array variables. --rr Make _n_a_m_es readonly. These names cannot then be assigned values by subsequent assignment statements or unset. - --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions - inherit the DDEEBBUUGG and RREETTUURRNN traps from the calling - shell. The trace attribute has no special meaning for + --tt Give each _n_a_m_e the _t_r_a_c_e attribute. Traced functions + inherit the DDEEBBUUGG and RREETTUURRNN traps from the calling + shell. The trace attribute has no special meaning for variables. - --uu When the variable is assigned a value, all lower-case - characters are converted to upper-case. The lower-case + --uu When the variable is assigned a value, all lower-case + characters are converted to upper-case. The lower-case attribute is disabled. - --xx Mark _n_a_m_es for export to subsequent commands via the + --xx Mark _n_a_m_es for export to subsequent commands via the environment. - Using `+' instead of `-' turns off the attribute instead, with + Using `+' instead of `-' turns off the attribute instead, with the exceptions that ++aa may not be used to destroy an array vari- - able and ++rr will not remove the readonly attribute. When used + able and ++rr will not remove the readonly attribute. When used in a function, ddeeccllaarree and ttyyppeesseett make each _n_a_m_e local, as with the llooccaall command, unless the --gg option is supplied. If a vari- - able name is followed by =_v_a_l_u_e, the value of the variable is - set to _v_a_l_u_e. When using --aa or --AA and the compound assignment - syntax to create array variables, additional attributes do not + able name is followed by =_v_a_l_u_e, the value of the variable is + set to _v_a_l_u_e. When using --aa or --AA 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 AArrrraayyss above), one of the _n_a_m_e_s 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 + 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 AArrrraayyss above), one of the _n_a_m_e_s 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 --ff. ddiirrss [[--ccllppvv]] [[++_n]] [[--_n]] - 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 ppuusshhdd command; the ppooppdd 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 ppuusshhdd command; the ppooppdd command removes + entries from the list. The current directory is always the first directory in the stack. --cc Clears the directory stack by deleting all of the entries. - --ll Produces a listing using full pathnames; the default + --ll Produces a listing using full pathnames; the default listing format uses a tilde to denote the home directory. --pp Print the directory stack with one entry per line. - --vv Print the directory stack with one entry per line, pre- + --vv Print the directory stack with one entry per line, pre- fixing each entry with its index in the stack. ++_n Displays the _nth entry counting from the left of the list shown by ddiirrss when invoked without options, starting with zero. - --_n Displays the _nth entry counting from the right of the + --_n Displays the _nth entry counting from the right of the list shown by ddiirrss when invoked without options, starting with zero. - The return value is 0 unless an invalid option is supplied or _n + The return value is 0 unless an invalid option is supplied or _n indexes beyond the end of the directory stack. ddiissoowwnn [--aarr] [--hh] [_j_o_b_s_p_e_c ... | _p_i_d ... ] - Without options, remove each _j_o_b_s_p_e_c from the table of active - jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr - option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option - is given, each _j_o_b_s_p_e_c is not removed from the table, but is - marked so that SSIIGGHHUUPP is not sent to the job if the shell - receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option - means to remove or mark all jobs; the --rr option without a _j_o_b_- - _s_p_e_c argument restricts operation to running jobs. The return + Without options, remove each _j_o_b_s_p_e_c from the table of active + jobs. If _j_o_b_s_p_e_c is not present, and neither the --aa nor the --rr + option is supplied, the _c_u_r_r_e_n_t _j_o_b is used. If the --hh option + is given, each _j_o_b_s_p_e_c is not removed from the table, but is + marked so that SSIIGGHHUUPP is not sent to the job if the shell + receives a SSIIGGHHUUPP. If no _j_o_b_s_p_e_c is supplied, the --aa option + means to remove or mark all jobs; the --rr option without a _j_o_b_- + _s_p_e_c argument restricts operation to running jobs. The return value is 0 unless a _j_o_b_s_p_e_c does not specify a valid job. eecchhoo [--nneeEE] [_a_r_g ...] - Output the _a_r_gs, separated by spaces, followed by a newline. - The return status is 0 unless a write error occurs. If --nn is + Output the _a_r_gs, separated by spaces, followed by a newline. + The return status is 0 unless a write error occurs. If --nn is specified, the trailing newline is suppressed. If the --ee option - is given, interpretation of the following backslash-escaped - characters is enabled. The --EE option disables the interpreta- - tion of these escape characters, even on systems where they are - interpreted by default. The xxppgg__eecchhoo shell option may be used - to dynamically determine whether or not eecchhoo expands these - escape characters by default. eecchhoo does not interpret ---- to - mean the end of options. eecchhoo interprets the following escape + is given, interpretation of the following backslash-escaped + characters is enabled. The --EE option disables the interpreta- + tion of these escape characters, even on systems where they are + interpreted by default. The xxppgg__eecchhoo shell option may be used + to dynamically determine whether or not eecchhoo expands these + escape characters by default. eecchhoo does not interpret ---- to + mean the end of options. eecchhoo interprets the following escape sequences: \\aa alert (bell) \\bb backspace @@ -506,190 +517,190 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS \\tt horizontal tab \\vv vertical tab \\\\ backslash - \\00_n_n_n the eight-bit character whose value is the octal value + \\00_n_n_n the eight-bit character whose value is the octal value _n_n_n (zero to three octal digits) - \\xx_H_H the eight-bit character whose value is the hexadecimal + \\xx_H_H the eight-bit character whose value is the hexadecimal value _H_H (one or two hex digits) - \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the + \\uu_H_H_H_H the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H (one to four hex digits) \\UU_H_H_H_H_H_H_H_H - the Unicode (ISO/IEC 10646) character whose value is the + the Unicode (ISO/IEC 10646) character whose value is the hexadecimal value _H_H_H_H_H_H_H_H (one to eight hex digits) eennaabbllee [--aa] [--ddnnppss] [--ff _f_i_l_e_n_a_m_e] [_n_a_m_e ...] - 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 --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are + to be executed without specifying a full pathname, even though + the shell normally searches for builtins before disk commands. + If --nn is used, each _n_a_m_e is disabled; otherwise, _n_a_m_e_s are enabled. For example, to use the tteesstt binary found via the PPAATTHH - instead of the shell builtin version, run ``enable -n test''. - The --ff option means to load the new builtin command _n_a_m_e from + instead of the shell builtin version, run ``enable -n test''. + The --ff option means to load the new builtin command _n_a_m_e from shared object _f_i_l_e_n_a_m_e, on systems that support dynamic loading. - The --dd option will delete a builtin previously loaded with --ff. + The --dd option will delete a builtin previously loaded with --ff. If no _n_a_m_e arguments are given, or if the --pp 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 --nn - is supplied, only disabled builtins are printed. If --aa is sup- - plied, the list printed includes all builtins, with an indica- - tion of whether or not each is enabled. If --ss is supplied, the - output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return - value is 0 unless a _n_a_m_e is not a shell builtin or there is an + ments, the list consists of all enabled shell builtins. If --nn + is supplied, only disabled builtins are printed. If --aa is sup- + plied, the list printed includes all builtins, with an indica- + tion of whether or not each is enabled. If --ss is supplied, the + output is restricted to the POSIX _s_p_e_c_i_a_l builtins. The return + value is 0 unless a _n_a_m_e is not a shell builtin or there is an error loading a new builtin from a shared object. eevvaall [_a_r_g ...] - The _a_r_gs 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 eevvaall. If there are + The _a_r_gs 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 eevvaall. If there are no _a_r_g_s, or only null arguments, eevvaall returns 0. eexxeecc [--ccll] [--aa _n_a_m_e] [_c_o_m_m_a_n_d [_a_r_g_u_m_e_n_t_s]] - If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process - is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If + If _c_o_m_m_a_n_d is specified, it replaces the shell. No new process + is created. The _a_r_g_u_m_e_n_t_s become the arguments to _c_o_m_m_a_n_d. If the --ll option is supplied, the shell places a dash at the begin- - ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what + ning of the zeroth argument passed to _c_o_m_m_a_n_d. This is what _l_o_g_i_n(1) does. The --cc option causes _c_o_m_m_a_n_d to be executed with - an empty environment. If --aa is supplied, the shell passes _n_a_m_e + an empty environment. If --aa is supplied, the shell passes _n_a_m_e as the zeroth argument to the executed command. If _c_o_m_m_a_n_d can- - not be executed for some reason, a non-interactive shell exits, - unless the eexxeeccffaaiill 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 - eexxeecc fails. If _c_o_m_m_a_n_d is not specified, any redirections take - effect in the current shell, and the return status is 0. If + not be executed for some reason, a non-interactive shell exits, + unless the eexxeeccffaaiill 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 + eexxeecc fails. If _c_o_m_m_a_n_d 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. eexxiitt [_n] - Cause the shell to exit with a status of _n. If _n is omitted, + Cause the shell to exit with a status of _n. If _n is omitted, the exit status is that of the last command executed. A trap on EEXXIITT is executed before the shell terminates. eexxppoorrtt [--ffnn] [_n_a_m_e[=_w_o_r_d]] ... eexxppoorrtt --pp - The supplied _n_a_m_e_s are marked for automatic export to the envi- - ronment of subsequently executed commands. If the --ff option is - given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or - if the --pp option is supplied, a list of names of all exported - variables is printed. The --nn option causes the export property + The supplied _n_a_m_e_s are marked for automatic export to the envi- + ronment of subsequently executed commands. If the --ff option is + given, the _n_a_m_e_s refer to functions. If no _n_a_m_e_s are given, or + if the --pp option is supplied, a list of names of all exported + variables is printed. The --nn option causes the export property to be removed from each _n_a_m_e. If a variable name is followed by =_w_o_r_d, the value of the variable is set to _w_o_r_d. eexxppoorrtt returns an exit status of 0 unless an invalid option is encountered, one - of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- + of the _n_a_m_e_s is not a valid shell variable name, or --ff is sup- plied with a _n_a_m_e that is not a function. ffcc [--ee _e_n_a_m_e] [--llnnrr] [_f_i_r_s_t] [_l_a_s_t] ffcc --ss [_p_a_t=_r_e_p] [_c_m_d] - The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t - from the history list and displays or edits and re-executes - them. _F_i_r_s_t and _l_a_s_t 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 _l_a_s_t is not + The first form selects a range of commands from _f_i_r_s_t to _l_a_s_t + from the history list and displays or edits and re-executes + them. _F_i_r_s_t and _l_a_s_t 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 _l_a_s_t is not specified, it is set to the current command for listing (so that - ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- + ``fc -l -10'' prints the last 10 commands) and to _f_i_r_s_t other- wise. If _f_i_r_s_t is not specified, it is set to the previous com- mand for editing and -16 for listing. - The --nn option suppresses the command numbers when listing. The - --rr option reverses the order of the commands. If the --ll option - is given, the commands are listed on standard output. Other- - wise, the editor given by _e_n_a_m_e is invoked on a file containing - those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT - variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. - If neither variable is set, _v_i is used. When editing is com- + The --nn option suppresses the command numbers when listing. The + --rr option reverses the order of the commands. If the --ll option + is given, the commands are listed on standard output. Other- + wise, the editor given by _e_n_a_m_e is invoked on a file containing + those commands. If _e_n_a_m_e is not given, the value of the FFCCEEDDIITT + variable is used, and the value of EEDDIITTOORR if FFCCEEDDIITT is not set. + If neither variable is set, _v_i is used. When editing is com- plete, the edited commands are echoed and executed. - In the second form, _c_o_m_m_a_n_d is re-executed after each instance - of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is interpreted the same as - _f_i_r_s_t above. 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, _c_o_m_m_a_n_d is re-executed after each instance + of _p_a_t is replaced by _r_e_p. _C_o_m_m_a_n_d is interpreted the same as + _f_i_r_s_t 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 _f_i_r_s_t or _l_a_s_t specify history - lines out of range. If the --ee option is supplied, the return + If the first form is used, the return value is 0 unless an + invalid option is encountered or _f_i_r_s_t or _l_a_s_t specify history + lines out of range. If the --ee 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 _c_m_d does not specify a valid history line, in + form is used, the return status is that of the command re-exe- + cuted, unless _c_m_d does not specify a valid history line, in which case ffcc returns failure. ffgg [_j_o_b_s_p_e_c] - Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. + Resume _j_o_b_s_p_e_c in the foreground, and make it the current job. If _j_o_b_s_p_e_c is not present, the shell's notion of the _c_u_r_r_e_n_t _j_o_b - 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 _j_o_b_s_p_e_c does not spec- - ify a valid job or _j_o_b_s_p_e_c specifies a job that was started + ify a valid job or _j_o_b_s_p_e_c specifies a job that was started without job control. ggeettooppttss _o_p_t_s_t_r_i_n_g _n_a_m_e [_a_r_g_s] - ggeettooppttss is used by shell procedures to parse positional parame- - ters. _o_p_t_s_t_r_i_n_g 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, ggeettooppttss - places the next option in the shell variable _n_a_m_e, initializing + ggeettooppttss is used by shell procedures to parse positional parame- + ters. _o_p_t_s_t_r_i_n_g 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, ggeettooppttss + places the next option in the shell variable _n_a_m_e, initializing _n_a_m_e if it does not exist, and the index of the next argument to be processed into the variable OOPPTTIINNDD. OOPPTTIINNDD is initialized to - 1 each time the shell or a shell script is invoked. When an - option requires an argument, ggeettooppttss places that argument into - the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD 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, ggeettooppttss places that argument into + the variable OOPPTTAARRGG. The shell does not reset OOPPTTIINNDD automati- + cally; it must be manually reset between multiple calls to ggeettooppttss within the same shell invocation if a new set of parame- ters is to be used. - When the end of options is encountered, ggeettooppttss exits with a - return value greater than zero. OOPPTTIINNDD is set to the index of + When the end of options is encountered, ggeettooppttss exits with a + return value greater than zero. OOPPTTIINNDD is set to the index of the first non-option argument, and _n_a_m_e is set to ?. - ggeettooppttss normally parses the positional parameters, but if more + ggeettooppttss normally parses the positional parameters, but if more arguments are given in _a_r_g_s, ggeettooppttss parses those instead. - ggeettooppttss can report errors in two ways. If the first character - of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In - normal operation, diagnostic messages are printed when invalid - options or missing option arguments are encountered. If the - variable OOPPTTEERRRR is set to 0, no error messages will be dis- + ggeettooppttss can report errors in two ways. If the first character + of _o_p_t_s_t_r_i_n_g is a colon, _s_i_l_e_n_t error reporting is used. In + normal operation, diagnostic messages are printed when invalid + options or missing option arguments are encountered. If the + variable OOPPTTEERRRR is set to 0, no error messages will be dis- played, even if the first character of _o_p_t_s_t_r_i_n_g is not a colon. If an invalid option is seen, ggeettooppttss places ? into _n_a_m_e and, if - not silent, prints an error message and unsets OOPPTTAARRGG. If - ggeettooppttss is silent, the option character found is placed in + not silent, prints an error message and unsets OOPPTTAARRGG. If + ggeettooppttss is silent, the option character found is placed in OOPPTTAARRGG and no diagnostic message is printed. - If a required argument is not found, and ggeettooppttss is not silent, - a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a - diagnostic message is printed. If ggeettooppttss is silent, then a - colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option + If a required argument is not found, and ggeettooppttss is not silent, + a question mark (??) is placed in _n_a_m_e, OOPPTTAARRGG is unset, and a + diagnostic message is printed. If ggeettooppttss is silent, then a + colon (::) is placed in _n_a_m_e and OOPPTTAARRGG is set to the option character found. - ggeettooppttss returns true if an option, specified or unspecified, is + ggeettooppttss returns true if an option, specified or unspecified, is found. It returns false if the end of options is encountered or an error occurs. hhaasshh [--llrr] [--pp _f_i_l_e_n_a_m_e] [--ddtt] [_n_a_m_e] Each time hhaasshh is invoked, the full pathname of the command _n_a_m_e - is determined by searching the directories in $$PPAATTHH and remem- + is determined by searching the directories in $$PPAATTHH and remem- bered. Any previously-remembered pathname is discarded. If the --pp option is supplied, no path search is performed, and _f_i_l_e_n_a_m_e - is used as the full filename of the command. The --rr option - causes the shell to forget all remembered locations. The --dd - option causes the shell to forget the remembered location of - each _n_a_m_e. If the --tt option is supplied, the full pathname to - which each _n_a_m_e corresponds is printed. If multiple _n_a_m_e argu- - ments are supplied with --tt, the _n_a_m_e is printed before the - hashed full pathname. The --ll option causes output to be dis- + is used as the full filename of the command. The --rr option + causes the shell to forget all remembered locations. The --dd + option causes the shell to forget the remembered location of + each _n_a_m_e. If the --tt option is supplied, the full pathname to + which each _n_a_m_e corresponds is printed. If multiple _n_a_m_e argu- + ments are supplied with --tt, the _n_a_m_e is printed before the + hashed full pathname. The --ll option causes output to be dis- played in a format that may be reused as input. If no arguments - are given, or if only --ll is supplied, information about remem- - bered commands is printed. The return status is true unless a + are given, or if only --ll is supplied, information about remem- + bered commands is printed. The return status is true unless a _n_a_m_e is not found or an invalid option is supplied. hheellpp [--ddmmss] [_p_a_t_t_e_r_n] - Display helpful information about builtin commands. If _p_a_t_t_e_r_n - is specified, hheellpp gives detailed help on all commands matching - _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control + Display helpful information about builtin commands. If _p_a_t_t_e_r_n + is specified, hheellpp gives detailed help on all commands matching + _p_a_t_t_e_r_n; otherwise help for all the builtins and shell control structures is printed. --dd Display a short description of each _p_a_t_t_e_r_n --mm Display the description of each _p_a_t_t_e_r_n in a manpage-like @@ -707,53 +718,53 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS hhiissttoorryy --ss _a_r_g [_a_r_g _._._.] With no options, display the command history list with line num- bers. Lines listed with a ** have been modified. An argument of - _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- - FFOORRMMAATT is set and not null, it is used as a format string for - _s_t_r_f_t_i_m_e(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 _f_i_l_e_n_a_m_e is - supplied, it is used as the name of the history file; if not, - the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the + _n lists only the last _n lines. If the shell variable HHIISSTTTTIIMMEE-- + FFOORRMMAATT is set and not null, it is used as a format string for + _s_t_r_f_t_i_m_e(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 _f_i_l_e_n_a_m_e is + supplied, it is used as the name of the history file; if not, + the value of HHIISSTTFFIILLEE is used. Options, if supplied, have the following meanings: --cc Clear the history list by deleting all the entries. --dd _o_f_f_s_e_t - Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t + Delete the history entry at position _o_f_f_s_e_t. If _o_f_f_s_e_t 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 + back from the end of the history, and an index of -1 refers to the current hhiissttoorryy --dd command. --dd _s_t_a_r_t-_e_n_d - Delete the history entries between positions _s_t_a_r_t and - _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t + Delete the history entries between positions _s_t_a_r_t and + _e_n_d, inclusive. Positive and negative values for _s_t_a_r_t and _e_n_d are interpreted as described above. - --aa Append the ``new'' history lines to the history file. - These are history lines entered since the beginning of + --aa Append the ``new'' history lines to the history file. + These are history lines entered since the beginning of the current bbaasshh session, but not already appended to the history file. - --nn 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 + --nn 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 bbaasshh session. - --rr Read the contents of the history file and append them to + --rr Read the contents of the history file and append them to the current history list. --ww Write the current history list to the history file, over- writing the history file's contents. - --pp Perform history substitution on the following _a_r_g_s and - display the result on the standard output. Does not - store the results in the history list. Each _a_r_g must be + --pp Perform history substitution on the following _a_r_g_s and + display the result on the standard output. Does not + store the results in the history list. Each _a_r_g must be quoted to disable normal history expansion. - --ss Store the _a_r_g_s in the history list as a single entry. - The last command in the history list is removed before + --ss Store the _a_r_g_s in the history list as a single entry. + The last command in the history list is removed before the _a_r_g_s are added. - If the HHIISSTTTTIIMMEEFFOORRMMAATT 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 HHIISSTTTTIIMMEEFFOORRMMAATT 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 _o_f_f_s_e_t is sup- + reading or writing the history file, an invalid _o_f_f_s_e_t is sup- plied as an argument to --dd, or the history expansion supplied as an argument to --pp fails. @@ -762,210 +773,210 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS The first form lists the active jobs. The options have the fol- lowing meanings: --ll List process IDs in addition to the normal information. - --nn Display information only about jobs that have changed + --nn Display information only about jobs that have changed status since the user was last notified of their status. - --pp List only the process ID of the job's process group + --pp List only the process ID of the job's process group leader. --rr Display only running jobs. --ss Display only stopped jobs. - If _j_o_b_s_p_e_c is given, output is restricted to information about - that job. The return status is 0 unless an invalid option is + If _j_o_b_s_p_e_c is given, output is restricted to information about + that job. The return status is 0 unless an invalid option is encountered or an invalid _j_o_b_s_p_e_c is supplied. If the --xx option is supplied, jjoobbss replaces any _j_o_b_s_p_e_c found in - _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and + _c_o_m_m_a_n_d or _a_r_g_s with the corresponding process group ID, and executes _c_o_m_m_a_n_d passing it _a_r_g_s, returning its exit status. kkiillll [--ss _s_i_g_s_p_e_c | --nn _s_i_g_n_u_m | --_s_i_g_s_p_e_c] [_p_i_d | _j_o_b_s_p_e_c] ... kkiillll --ll|--LL [_s_i_g_s_p_e_c | _e_x_i_t___s_t_a_t_u_s] - Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes - named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive - signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or - a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not - present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the - signal names. If any arguments are supplied when --ll is given, - the names of the signals corresponding to the arguments are + Send the signal named by _s_i_g_s_p_e_c or _s_i_g_n_u_m to the processes + named by _p_i_d or _j_o_b_s_p_e_c. _s_i_g_s_p_e_c is either a case-insensitive + signal name such as SSIIGGKKIILLLL (with or without the SSIIGG prefix) or + a signal number; _s_i_g_n_u_m is a signal number. If _s_i_g_s_p_e_c is not + present, then SSIIGGTTEERRMM is assumed. An argument of --ll lists the + signal names. If any arguments are supplied when --ll is given, + the names of the signals corresponding to the arguments are listed, and the return status is 0. The _e_x_i_t___s_t_a_t_u_s argument to - --ll is a number specifying either a signal number or the exit - status of a process terminated by a signal. The --LL option is - equivalent to --ll. kkiillll returns true if at least one signal was - successfully sent, or false if an error occurs or an invalid + --ll is a number specifying either a signal number or the exit + status of a process terminated by a signal. The --LL option is + equivalent to --ll. kkiillll returns true if at least one signal was + successfully sent, or false if an error occurs or an invalid option is encountered. lleett _a_r_g [_a_r_g ...] Each _a_r_g is an arithmetic expression to be evaluated (see AARRIITTHH-- - MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett + MMEETTIICC EEVVAALLUUAATTIIOONN above). If the last _a_r_g evaluates to 0, lleett returns 1; 0 is returned otherwise. llooccaall [_o_p_t_i_o_n] [_n_a_m_e[=_v_a_l_u_e] ... | - ] - For each argument, a local variable named _n_a_m_e is created, and - assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted + For each argument, a local variable named _n_a_m_e is created, and + assigned _v_a_l_u_e. The _o_p_t_i_o_n can be any of the options accepted by ddeeccllaarree. When llooccaall is used within a function, it causes the - variable _n_a_m_e to have a visible scope restricted to that func- - tion and its children. If _n_a_m_e is -, the set of shell options - is made local to the function in which llooccaall is invoked: shell - options changed using the sseett builtin inside the function are - restored to their original values when the function returns. - With no operands, llooccaall writes a list of local variables to the - standard output. It is an error to use llooccaall when not within a + variable _n_a_m_e to have a visible scope restricted to that func- + tion and its children. If _n_a_m_e is -, the set of shell options + is made local to the function in which llooccaall is invoked: shell + options changed using the sseett builtin inside the function are + restored to their original values when the function returns. + With no operands, llooccaall writes a list of local variables to the + standard output. It is an error to use llooccaall when not within a function. The return status is 0 unless llooccaall is used outside a - function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly + function, an invalid _n_a_m_e is supplied, or _n_a_m_e is a readonly variable. llooggoouutt Exit a login shell. - mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC + mmaappffiillee [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] rreeaaddaarrrraayy [--dd _d_e_l_i_m] [--nn _c_o_u_n_t] [--OO _o_r_i_g_i_n] [--ss _c_o_u_n_t] [--tt] [--uu _f_d] [--CC _c_a_l_l_b_a_c_k] [--cc _q_u_a_n_t_u_m] [_a_r_r_a_y] - Read lines from the standard input into the indexed array vari- - able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- - plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if + Read lines from the standard input into the indexed array vari- + able _a_r_r_a_y, or from file descriptor _f_d if the --uu option is sup- + plied. The variable MMAAPPFFIILLEE is the default _a_r_r_a_y. Options, if supplied, have the following meanings: - --dd The first character of _d_e_l_i_m is used to terminate each - input line, rather than newline. If _d_e_l_i_m is the empty + --dd The first character of _d_e_l_i_m is used to terminate each + input line, rather than newline. If _d_e_l_i_m is the empty string, mmaappffiillee will terminate a line when it reads a NUL character. - --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are + --nn Copy at most _c_o_u_n_t lines. If _c_o_u_n_t is 0, all lines are copied. - --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default + --OO Begin assigning to _a_r_r_a_y at index _o_r_i_g_i_n. The default index is 0. --ss Discard the first _c_o_u_n_t lines read. - --tt Remove a trailing _d_e_l_i_m (default newline) from each line + --tt Remove a trailing _d_e_l_i_m (default newline) from each line read. - --uu Read lines from file descriptor _f_d instead of the stan- + --uu Read lines from file descriptor _f_d instead of the stan- dard input. - --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The + --CC Evaluate _c_a_l_l_b_a_c_k each time _q_u_a_n_t_u_m lines are read. The --cc option specifies _q_u_a_n_t_u_m. - --cc Specify the number of lines read between each call to + --cc Specify the number of lines read between each call to _c_a_l_l_b_a_c_k. - If --CC is specified without --cc, the default quantum is 5000. + If --CC is specified without --cc, the default quantum is 5000. When _c_a_l_l_b_a_c_k 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. _c_a_l_l_b_a_c_k is evaluated after + element as additional arguments. _c_a_l_l_b_a_c_k is evaluated after the line is read but before the array element is assigned. - If not supplied with an explicit origin, mmaappffiillee will clear + If not supplied with an explicit origin, mmaappffiillee will clear _a_r_r_a_y before assigning to it. - mmaappffiillee returns successfully unless an invalid option or option - argument is supplied, _a_r_r_a_y is invalid or unassignable, or if + mmaappffiillee returns successfully unless an invalid option or option + argument is supplied, _a_r_r_a_y is invalid or unassignable, or if _a_r_r_a_y is not an indexed array. ppooppdd [-nn] [+_n] [-_n] - Removes entries from the directory stack. With no arguments, - removes the top directory from the stack, and performs a ccdd to + Removes entries from the directory stack. With no arguments, + removes the top directory from the stack, and performs a ccdd to the new top directory. Arguments, if supplied, have the follow- ing meanings: - --nn Suppresses the normal change of directory when removing - directories from the stack, so that only the stack is + --nn Suppresses the normal change of directory when removing + directories from the stack, so that only the stack is manipulated. - ++_n Removes the _nth entry counting from the left of the list - shown by ddiirrss, starting with zero. For example: ``popd + ++_n Removes the _nth entry counting from the left of the list + shown by ddiirrss, starting with zero. For example: ``popd +0'' removes the first directory, ``popd +1'' the second. --_n Removes the _nth entry counting from the right of the list - shown by ddiirrss, starting with zero. For example: ``popd - -0'' removes the last directory, ``popd -1'' the next to + shown by ddiirrss, starting with zero. For example: ``popd + -0'' removes the last directory, ``popd -1'' the next to last. - If the ppooppdd command is successful, a ddiirrss is performed as well, - and the return status is 0. ppooppdd returns false if an invalid + If the ppooppdd command is successful, a ddiirrss is performed as well, + and the return status is 0. ppooppdd 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. pprriinnttff [--vv _v_a_r] _f_o_r_m_a_t [_a_r_g_u_m_e_n_t_s] - Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the - control of the _f_o_r_m_a_t. The --vv option causes the output to be - assigned to the variable _v_a_r rather than being printed to the + Write the formatted _a_r_g_u_m_e_n_t_s to the standard output under the + control of the _f_o_r_m_a_t. The --vv option causes the output to be + assigned to the variable _v_a_r rather than being printed to the standard output. - The _f_o_r_m_a_t 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 _a_r_g_u_m_e_n_t. In + The _f_o_r_m_a_t 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 _a_r_g_u_m_e_n_t. In addition to the standard _p_r_i_n_t_f(1) format specifications, pprriinnttff interprets the following extensions: %%bb causes pprriinnttff to expand backslash escape sequences in the corresponding _a_r_g_u_m_e_n_t in the same way as eecchhoo --ee. - %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a + %%qq causes pprriinnttff to output the corresponding _a_r_g_u_m_e_n_t in a format that can be reused as shell input. %%((_d_a_t_e_f_m_t))TT - causes pprriinnttff to output the date-time string resulting - from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). + causes pprriinnttff to output the date-time string resulting + from using _d_a_t_e_f_m_t as a format string for _s_t_r_f_t_i_m_e(3). The corresponding _a_r_g_u_m_e_n_t 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 pprriinnttff + 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 pprriinnttff 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 _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- + The _f_o_r_m_a_t is reused as necessary to consume all of the _a_r_g_u_- _m_e_n_t_s. If the _f_o_r_m_a_t requires more _a_r_g_u_m_e_n_t_s 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. ppuusshhdd [--nn] [+_n] [-_n] ppuusshhdd [--nn] [_d_i_r] - 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, ppuusshhdd 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, ppuusshhdd exchanges the top two + directories and returns 0, unless the directory stack is empty. Arguments, if supplied, have the following meanings: - --nn Suppresses the normal change of directory when rotating - or adding directories to the stack, so that only the + --nn Suppresses the normal change of directory when rotating + or adding directories to the stack, so that only the stack is manipulated. - ++_n Rotates the stack so that the _nth directory (counting - from the left of the list shown by ddiirrss, starting with + ++_n Rotates the stack so that the _nth directory (counting + from the left of the list shown by ddiirrss, starting with zero) is at the top. - --_n Rotates the stack so that the _nth directory (counting - from the right of the list shown by ddiirrss, starting with + --_n Rotates the stack so that the _nth directory (counting + from the right of the list shown by ddiirrss, starting with zero) is at the top. _d_i_r Adds _d_i_r 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 ccdd builtin. If the ppuusshhdd command is successful, a ddiirrss is performed as well. - If the first form is used, ppuusshhdd returns 0 unless the cd to _d_i_r - fails. With the second form, ppuusshhdd 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, ppuusshhdd returns 0 unless the cd to _d_i_r + fails. With the second form, ppuusshhdd 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. ppwwdd [--LLPP] - 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 --PP option is supplied or the --oo pphhyyssiiccaall option to the sseett builtin command - is enabled. If the --LL 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 --LL 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. rreeaadd [--eerrss] [--aa _a_n_a_m_e] [--dd _d_e_l_i_m] [--ii _t_e_x_t] [--nn _n_c_h_a_r_s] [--NN _n_c_h_a_r_s] [--pp _p_r_o_m_p_t] [--tt _t_i_m_e_o_u_t] [--uu _f_d] [_n_a_m_e ...] - One line is read from the standard input, or from the file - descriptor _f_d supplied as an argument to the --uu option, split - into words as described above under WWoorrdd SSpplliittttiinngg, and the + One line is read from the standard input, or from the file + descriptor _f_d supplied as an argument to the --uu option, split + into words as described above under WWoorrdd SSpplliittttiinngg, and the first word is assigned to the first _n_a_m_e, the second word to the second _n_a_m_e, and so on. If there are more words than names, the remaining words and their intervening delimiters are assigned to - the last _n_a_m_e. If there are fewer words read from the input - stream than names, the remaining names are assigned empty val- - ues. The characters in IIFFSS are used to split the line into + the last _n_a_m_e. If there are fewer words read from the input + stream than names, the remaining names are assigned empty val- + ues. The characters in IIFFSS are used to split the line into words using the same rules the shell uses for expansion (described above under WWoorrdd SSpplliittttiinngg). The backslash character (\\) 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: --aa _a_n_a_m_e The words are assigned to sequential indices of the array @@ -973,31 +984,31 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS new values are assigned. Other _n_a_m_e arguments are ignored. --dd _d_e_l_i_m - The first character of _d_e_l_i_m is used to terminate the - input line, rather than newline. If _d_e_l_i_m is the empty - string, rreeaadd will terminate a line when it reads a NUL + The first character of _d_e_l_i_m is used to terminate the + input line, rather than newline. If _d_e_l_i_m is the empty + string, rreeaadd will terminate a line when it reads a NUL character. --ee If the standard input is coming from a terminal, rreeaaddlliinnee - (see RREEAADDLLIINNEE 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- + (see RREEAADDLLIINNEE 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. --ii _t_e_x_t - If rreeaaddlliinnee is being used to read the line, _t_e_x_t is + If rreeaaddlliinnee is being used to read the line, _t_e_x_t is placed into the editing buffer before editing begins. --nn _n_c_h_a_r_s - rreeaadd returns after reading _n_c_h_a_r_s characters rather than + rreeaadd returns after reading _n_c_h_a_r_s characters rather than waiting for a complete line of input, but honors a delim- - iter if fewer than _n_c_h_a_r_s characters are read before the + iter if fewer than _n_c_h_a_r_s characters are read before the delimiter. --NN _n_c_h_a_r_s - rreeaadd returns after reading exactly _n_c_h_a_r_s characters - rather than waiting for a complete line of input, unless - EOF is encountered or rreeaadd times out. Delimiter charac- - ters encountered in the input are not treated specially - and do not cause rreeaadd to return until _n_c_h_a_r_s characters - are read. The result is not split on the characters in - IIFFSS; the intent is that the variable is assigned exactly + rreeaadd returns after reading exactly _n_c_h_a_r_s characters + rather than waiting for a complete line of input, unless + EOF is encountered or rreeaadd times out. Delimiter charac- + ters encountered in the input are not treated specially + and do not cause rreeaadd to return until _n_c_h_a_r_s characters + are read. The result is not split on the characters in + IIFFSS; the intent is that the variable is assigned exactly the characters read (with the exception of backslash; see the --rr option below). --pp _p_r_o_m_p_t @@ -1005,131 +1016,131 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS line, before attempting to read any input. The prompt is displayed only if input is coming from a terminal. --rr 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 + slash is considered to be part of the line. In particu- + lar, a backslash-newline pair may not be used as a line continuation. --ss Silent mode. If input is coming from a terminal, charac- ters are not echoed. --tt _t_i_m_e_o_u_t - Cause rreeaadd to time out and return failure if a complete - line of input (or a specified number of characters) is - not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- - mal number with a fractional portion following the deci- - mal point. This option is only effective if rreeaadd is - reading input from a terminal, pipe, or other special - file; it has no effect when reading from regular files. + Cause rreeaadd to time out and return failure if a complete + line of input (or a specified number of characters) is + not read within _t_i_m_e_o_u_t seconds. _t_i_m_e_o_u_t may be a deci- + mal number with a fractional portion following the deci- + mal point. This option is only effective if rreeaadd is + reading input from a terminal, pipe, or other special + file; it has no effect when reading from regular files. If rreeaadd times out, rreeaadd saves any partial input read into - the specified variable _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd - 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 _n_a_m_e. If _t_i_m_e_o_u_t is 0, rreeaadd + 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. --uu _f_d Read input from file descriptor _f_d. If no _n_a_m_e_s are supplied, the line read is assigned to the vari- - able RREEPPLLYY. The exit status is zero, unless end-of-file is + able RREEPPLLYY. The exit status is zero, unless end-of-file is encountered, rreeaadd 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 --uu. rreeaaddoonnllyy [--aaAAff] [--pp] [_n_a_m_e[=_w_o_r_d] ...] - The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s - may not be changed by subsequent assignment. If the --ff option - is supplied, the functions corresponding to the _n_a_m_e_s are so - marked. The --aa option restricts the variables to indexed - arrays; the --AA option restricts the variables to associative - arrays. If both options are supplied, --AA takes precedence. If - no _n_a_m_e arguments are given, or if the --pp option is supplied, a + The given _n_a_m_e_s are marked readonly; the values of these _n_a_m_e_s + may not be changed by subsequent assignment. If the --ff option + is supplied, the functions corresponding to the _n_a_m_e_s are so + marked. The --aa option restricts the variables to indexed + arrays; the --AA option restricts the variables to associative + arrays. If both options are supplied, --AA takes precedence. If + no _n_a_m_e arguments are given, or if the --pp 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 --pp option causes output to be displayed in a format - that may be reused as input. If a variable name is followed by - =_w_o_r_d, the value of the variable is set to _w_o_r_d. 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 --pp option causes output to be displayed in a format + that may be reused as input. If a variable name is followed by + =_w_o_r_d, the value of the variable is set to _w_o_r_d. The return + status is 0 unless an invalid option is encountered, one of the _n_a_m_e_s is not a valid shell variable name, or --ff is supplied with a _n_a_m_e that is not a function. rreettuurrnn [_n] - Causes a function to stop executing and return the value speci- - fied by _n to its caller. If _n is omitted, the return status is - that of the last command executed in the function body. If - rreettuurrnn is executed by a trap handler, the last command used to - determine the status is the last command executed before the - trap handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the - last command used to determine the status is the last command - executed by the trap handler before rreettuurrnn was invoked. If - rreettuurrnn is used outside a function, but during execution of a - script by the .. (ssoouurrccee) command, it causes the shell to stop - executing that script and return either _n or the exit status of - the last command executed within the script as the exit status - of the script. If _n is supplied, the return value is its least - significant 8 bits. The return status is non-zero if rreettuurrnn is - supplied a non-numeric argument, or is used outside a function - and not during execution of a script by .. or ssoouurrccee. Any com- - mand associated with the RREETTUURRNN trap is executed before execu- + Causes a function to stop executing and return the value speci- + fied by _n to its caller. If _n is omitted, the return status is + that of the last command executed in the function body. If + rreettuurrnn is executed by a trap handler, the last command used to + determine the status is the last command executed before the + trap handler. If rreettuurrnn is executed during a DDEEBBUUGG trap, the + last command used to determine the status is the last command + executed by the trap handler before rreettuurrnn was invoked. If + rreettuurrnn is used outside a function, but during execution of a + script by the .. (ssoouurrccee) command, it causes the shell to stop + executing that script and return either _n or the exit status of + the last command executed within the script as the exit status + of the script. If _n is supplied, the return value is its least + significant 8 bits. The return status is non-zero if rreettuurrnn is + supplied a non-numeric argument, or is used outside a function + and not during execution of a script by .. or ssoouurrccee. Any com- + mand associated with the RREETTUURRNN trap is executed before execu- tion resumes after the function or script. sseett [----aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [--oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] sseett [++aabbeeffhhkkmmnnppttuuvvxxBBCCEEHHPPTT] [++oo _o_p_t_i_o_n_-_n_a_m_e] [_a_r_g ...] - Without options, 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 _p_o_s_i_x 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 _p_o_s_i_x _m_o_d_e, 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 - $$11, $$22, ...... $$_n. Options, if specified, have the following + $$11, $$22, ...... $$_n. Options, if specified, have the following meanings: --aa 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. - --bb Report the status of terminated background jobs immedi- + --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. - --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a - single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d + --ee Exit immediately if a _p_i_p_e_l_i_n_e (which may consist of a + single _s_i_m_p_l_e _c_o_m_m_a_n_d), a _l_i_s_t, or a _c_o_m_p_o_u_n_d _c_o_m_m_a_n_d (see SSHHEELLLL GGRRAAMMMMAARR 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 wwhhiillee - or uunnttiill keyword, part of the test following the iiff or - eelliiff reserved words, part of any command executed in a - &&&& or |||| list except the command following the final &&&& + The shell does not exit if the command that fails is + part of the command list immediately following a wwhhiillee + or uunnttiill keyword, part of the test following the iiff or + eelliiff reserved words, part of any command executed in a + &&&& or |||| list except the command following the final &&&& or ||||, any command in a pipeline but the last, or if the - command's return value is being inverted with !!. If a - compound command other than a subshell returns a non- - zero status because a command failed while --ee was being - ignored, the shell does not exit. A trap on EERRRR, if - set, is executed before the shell exits. This option + command's return value is being inverted with !!. If a + compound command other than a subshell returns a non- + zero status because a command failed while --ee was being + ignored, the shell does not exit. A trap on EERRRR, if + set, is executed before the shell exits. This option applies to the shell environment and each subshell envi- - ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT + ronment separately (see CCOOMMMMAANNDD EEXXEECCUUTTIIOONN EENNVVIIRROONNMMEENNTT 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 --ee is being ignored, none of the commands - executed within the compound command or function body - will be affected by the --ee setting, even if --ee is set - and a command returns a failure status. If a compound - command or shell function sets --ee while executing in a - context where --ee 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 --ee is being ignored, none of the commands + executed within the compound command or function body + will be affected by the --ee setting, even if --ee is set + and a command returns a failure status. If a compound + command or shell function sets --ee while executing in a + context where --ee is ignored, that setting will not have + any effect until the compound command or the command containing the function call completes. --ff Disable pathname expansion. - --hh Remember the location of commands as they are looked up + --hh Remember the location of commands as they are looked up for execution. This is enabled by default. - --kk All arguments in the form of assignment statements are - placed in the environment for a command, not just those + --kk All arguments in the form of assignment statements are + placed in the environment for a command, not just those that precede the command name. - --mm Monitor mode. Job control is enabled. This option is - on by default for interactive shells on systems that - support it (see JJOOBB CCOONNTTRROOLL above). All processes run + --mm Monitor mode. Job control is enabled. This option is + on by default for interactive shells on systems that + support it (see JJOOBB CCOONNTTRROOLL 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. --nn 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. --oo _o_p_t_i_o_n_-_n_a_m_e The _o_p_t_i_o_n_-_n_a_m_e can be one of the following: @@ -1137,10 +1148,10 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS Same as --aa. bbrraacceeeexxppaanndd Same as --BB. - eemmaaccss Use an emacs-style command line editing inter- + eemmaaccss 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 ----nnooeeddiittiinngg option. This also affects the + the ----nnooeeddiittiinngg option. This also affects the editing interface used for rreeaadd --ee. eerrrreexxiitt Same as --ee. eerrrrttrraaccee @@ -1154,8 +1165,8 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS HHIISSTTOORRYY. This option is on by default in inter- active shells. iiggnnoorreeeeooff - The effect is as if the shell command - ``IGNOREEOF=10'' had been executed (see SShheellll + The effect is as if the shell command + ``IGNOREEOF=10'' had been executed (see SShheellll VVaarriiaabblleess above). kkeeyywwoorrdd Same as --kk. mmoonniittoorr Same as --mm. @@ -1170,384 +1181,384 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS pphhyyssiiccaall Same as --PP. ppiippeeffaaiill - 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. - ppoossiixx Change the behavior of bbaasshh where the default - operation differs from the POSIX standard to - match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO + ppoossiixx Change the behavior of bbaasshh where the default + operation differs from the POSIX standard to + match the standard (_p_o_s_i_x _m_o_d_e). See SSEEEE AALLSSOO below for a reference to a document that details how posix mode affects bash's behavior. pprriivviilleeggeedd Same as --pp. vveerrbboossee Same as --vv. - vvii Use a vi-style command line editing interface. + vvii Use a vi-style command line editing interface. This also affects the editing interface used for rreeaadd --ee. xxttrraaccee Same as --xx. If --oo is supplied with no _o_p_t_i_o_n_-_n_a_m_e, the values of the - current options are printed. If ++oo is supplied with no - _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the - current option settings is displayed on the standard + current options are printed. If ++oo is supplied with no + _o_p_t_i_o_n_-_n_a_m_e, a series of sseett commands to recreate the + current option settings is displayed on the standard output. - --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and - $$BBAASSHH__EENNVV files are not processed, shell functions are - not inherited from the environment, and the SSHHEELLLLOOPPTTSS, - BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE variables, if they + --pp Turn on _p_r_i_v_i_l_e_g_e_d mode. In this mode, the $$EENNVV and + $$BBAASSHH__EENNVV files are not processed, shell functions are + not inherited from the environment, and the SSHHEELLLLOOPPTTSS, + BBAASSHHOOPPTTSS, CCDDPPAATTHH, and GGLLOOBBIIGGNNOORREE 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 --pp option is not sup- + started with the effective user (group) id not equal to + the real user (group) id, and the --pp option is not sup- plied, these actions are taken and the effective user id - is set to the real user id. If the --pp 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 --pp 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. --tt Exit after reading and executing one command. --uu 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. --vv Print shell input lines as they are read. - --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee + --xx After expanding each _s_i_m_p_l_e _c_o_m_m_a_n_d, ffoorr command, ccaassee command, sseelleecctt command, or arithmetic ffoorr command, dis- - play the expanded value of PPSS44, followed by the command + play the expanded value of PPSS44, followed by the command and its expanded arguments or associated word list. - --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn + --BB The shell performs brace expansion (see BBrraaccee EExxppaannssiioonn above). This is on by default. - --CC If set, bbaasshh does not overwrite an existing file with - the >>, >>&&, and <<>> redirection operators. This may be + --CC If set, bbaasshh does not overwrite an existing file with + the >>, >>&&, and <<>> redirection operators. This may be overridden when creating output files by using the redi- rection operator >>|| instead of >>. --EE If set, any trap on EERRRR is inherited by shell functions, - command substitutions, and commands executed in a sub- - shell environment. The EERRRR trap is normally not inher- + command substitutions, and commands executed in a sub- + shell environment. The EERRRR trap is normally not inher- ited in such cases. --HH Enable !! style history substitution. This option is on by default when the shell is interactive. - --PP If set, the shell does not resolve symbolic links when - executing commands such as ccdd that change the current + --PP If set, the shell does not resolve symbolic links when + executing commands such as ccdd that change the current working directory. It uses the physical directory structure instead. By default, bbaasshh follows the logical - chain of directories when performing commands which + chain of directories when performing commands which change the current directory. - --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by - shell functions, command substitutions, and commands - executed in a subshell environment. The DDEEBBUUGG and + --TT If set, any traps on DDEEBBUUGG and RREETTUURRNN are inherited by + shell functions, command substitutions, and commands + executed in a subshell environment. The DDEEBBUUGG and RREETTUURRNN traps are normally not inherited in such cases. - ---- If no arguments follow this option, then the positional + ---- If no arguments follow this option, then the positional parameters are unset. Otherwise, the positional parame- - ters are set to the _a_r_gs, even if some of them begin + ters are set to the _a_r_gs, even if some of them begin with a --. - -- Signal the end of options, cause all remaining _a_r_gs to + -- Signal the end of options, cause all remaining _a_r_gs to be assigned to the positional parameters. The --xx and --vv options are turned off. If there are no _a_r_gs, 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 $$--. 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 $$--. The return status is always true unless an invalid option is encoun- tered. sshhiifftt [_n] - The positional parameters from _n+1 ... are renamed to $$11 ........ - Parameters represented by the numbers $$## down to $$##-_n+1 are - unset. _n must be a non-negative number less than or equal to - $$##. If _n is 0, no parameters are changed. If _n is not given, - it is assumed to be 1. If _n is greater than $$##, the positional - parameters are not changed. The return status is greater than + The positional parameters from _n+1 ... are renamed to $$11 ........ + Parameters represented by the numbers $$## down to $$##-_n+1 are + unset. _n must be a non-negative number less than or equal to + $$##. If _n is 0, no parameters are changed. If _n is not given, + it is assumed to be 1. If _n is greater than $$##, the positional + parameters are not changed. The return status is greater than zero if _n is greater than $$## or less than zero; otherwise 0. sshhoopptt [--ppqqssuu] [--oo] [_o_p_t_n_a_m_e ...] - 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 --oo option is used, those available with the --oo option to the sseett builtin command. With no options, or with the --pp option, a list - of all settable options is displayed, with an indication of + of all settable options is displayed, with an indication of whether or not each is set; if _o_p_t_n_a_m_e_s are supplied, the output - is restricted to those options. The --pp option causes output to - be displayed in a form that may be reused as input. Other + is restricted to those options. The --pp option causes output to + be displayed in a form that may be reused as input. Other options have the following meanings: --ss Enable (set) each _o_p_t_n_a_m_e. --uu Disable (unset) each _o_p_t_n_a_m_e. - --qq Suppresses normal output (quiet mode); the return status + --qq Suppresses normal output (quiet mode); the return status indicates whether the _o_p_t_n_a_m_e is set or unset. If multi- - ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- - tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- + ple _o_p_t_n_a_m_e arguments are given with --qq, the return sta- + tus is zero if all _o_p_t_n_a_m_e_s are enabled; non-zero other- wise. - --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for + --oo Restricts the values of _o_p_t_n_a_m_e to be those defined for the --oo option to the sseett builtin. - If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt - shows only those options which are set or unset, respectively. - Unless otherwise noted, the sshhoopptt options are disabled (unset) + If either --ss or --uu is used with no _o_p_t_n_a_m_e arguments, sshhoopptt + shows only those options which are set or unset, respectively. + Unless otherwise noted, the sshhoopptt options are disabled (unset) by default. - The return status when listing options is zero if all _o_p_t_n_a_m_e_s - are enabled, non-zero otherwise. When setting or unsetting - options, the return status is zero unless an _o_p_t_n_a_m_e is not a + The return status when listing options is zero if all _o_p_t_n_a_m_e_s + are enabled, non-zero otherwise. When setting or unsetting + options, the return status is zero unless an _o_p_t_n_a_m_e is not a valid shell option. The list of sshhoopptt options is: aassssoocc__eexxppaanndd__oonnccee - If set, the shell suppresses multiple evaluation of - associative array subscripts during arithmetic expres- - sion evaluation and while executing builtins that can + If set, the shell suppresses multiple evaluation of + associative array subscripts during arithmetic expres- + sion evaluation and while executing builtins that can perform variable assignments. - aauuttooccdd If set, a command name that is the name of a directory - is executed as if it were the argument to the ccdd com- + aauuttooccdd If set, a command name that is the name of a directory + is executed as if it were the argument to the ccdd com- mand. This option is only used by interactive shells. ccddaabbllee__vvaarrss - If set, an argument to the ccdd builtin command that is - not a directory is assumed to be the name of a variable + If set, an argument to the ccdd builtin command that is + not a directory is assumed to be the name of a variable whose value is the directory to change to. ccddssppeellll If set, minor errors in the spelling of a directory com- - ponent in a ccdd command will be corrected. The errors + ponent in a ccdd 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. cchheecckkhhaasshh If set, bbaasshh 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. cchheecckkjjoobbss If set, bbaasshh 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 JJOOBB CCOONNTTRROOLL above). The shell always postpones + second exit is attempted without an intervening command + (see JJOOBB CCOONNTTRROOLL above). The shell always postpones exiting if any jobs are stopped. cchheecckkwwiinnssiizzee - If set, bbaasshh checks the window size after each external - (non-builtin) command and, if necessary, updates the + If set, bbaasshh checks the window size after each external + (non-builtin) command and, if necessary, updates the values of LLIINNEESS and CCOOLLUUMMNNSS. - ccmmddhhiisstt If set, bbaasshh 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 + ccmmddhhiisstt If set, bbaasshh 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 HHIISSTTOORRYY. ccoommppaatt3311 If set, bbaasshh changes its behavior to that of version 3.1 - with respect to quoted arguments to the [[[[ conditional + with respect to quoted arguments to the [[[[ conditional command's ==~~ operator and locale-specific string compar- - ison when using the [[[[ conditional command's << and >> - operators. Bash versions prior to bash-4.1 use ASCII + ison when using the [[[[ conditional command's << and >> + operators. Bash versions prior to bash-4.1 use ASCII collation and _s_t_r_c_m_p(3); bash-4.1 and later use the cur- rent locale's collation sequence and _s_t_r_c_o_l_l(3). ccoommppaatt3322 If set, bbaasshh changes its behavior to that of version 3.2 - with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators - (see previous item) 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 [[[[ conditional command's << and >> operators + (see previous item) and the effect of interrupting a + command list. Bash versions 3.2 and earlier continue + with the next command in the list after one terminates due to an interrupt. ccoommppaatt4400 If set, bbaasshh changes its behavior to that of version 4.0 - with respect to locale-specific string comparison when - using the [[[[ conditional command's << and >> operators - (see description of ccoommppaatt3311) and the effect of inter- - rupting a command list. Bash versions 4.0 and later - interrupt the list as if the shell received the inter- - rupt; previous versions continue with the next command + with respect to locale-specific string comparison when + using the [[[[ conditional command's << and >> operators + (see description of ccoommppaatt3311) and the effect of inter- + rupting a command list. Bash versions 4.0 and later + interrupt the list as if the shell received the inter- + rupt; previous versions continue with the next command in the list. ccoommppaatt4411 - If set, bbaasshh, when in _p_o_s_i_x mode, treats a single quote - in a double-quoted parameter expansion as a special - character. The single quotes must match (an even num- - ber) and the characters between the single quotes are - considered quoted. This is the behavior of posix mode - through version 4.1. The default bash behavior remains + If set, bbaasshh, when in _p_o_s_i_x _m_o_d_e, treats a single quote + in a double-quoted parameter expansion as a special + character. The single quotes must match (an even num- + ber) and the characters between the single quotes are + considered quoted. This is the behavior of posix mode + through version 4.1. The default bash behavior remains as in previous versions. ccoommppaatt4422 - If set, bbaasshh does not process the replacement string in - the pattern substitution word expansion using quote + If set, bbaasshh does not process the replacement string in + the pattern substitution word expansion using quote removal. ccoommppaatt4433 - If set, bbaasshh does not print a warning message if an - attempt is made to use a quoted compound array assign- - ment as an argument to ddeeccllaarree, makes word expansion - errors non-fatal errors that cause the current command - to fail (the default behavior is to make them fatal + If set, bbaasshh does not print a warning message if an + attempt is made to use a quoted compound array assign- + ment as an argument to ddeeccllaarree, makes word expansion + errors non-fatal errors that cause the current command + to fail (the default behavior is to make them fatal errors that cause the shell to exit), and does not reset - the loop state when a shell function is executed (this - allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect + the loop state when a shell function is executed (this + allows bbrreeaakk or ccoonnttiinnuuee in a shell function to affect loops in the caller's context). ccoommppaatt4444 - If set, bbaasshh saves the positional parameters to + If set, bbaasshh saves the positional parameters to BASH_ARGV and BASH_ARGC before they are used, regardless of whether or not extended debugging mode is enabled. ccoommpplleettee__ffuullllqquuoottee - If set, bbaasshh quotes all shell metacharacters in file- - names and directory names when performing completion. + If set, bbaasshh quotes all shell metacharacters in file- + names and directory names when performing completion. If not set, bbaasshh removes metacharacters such as the dol- - lar sign from the set of characters that will be quoted - in completed filenames when these metacharacters appear - in shell variable references in words to be completed. - This means that dollar signs in variable names that - expand to directories will not be quoted; however, any - dollar signs appearing in filenames will not be quoted, - either. This is active only when bash is using back- - slashes to quote completed filenames. This variable is - set by default, which is the default bash behavior in + lar sign from the set of characters that will be quoted + in completed filenames when these metacharacters appear + in shell variable references in words to be completed. + This means that dollar signs in variable names that + expand to directories will not be quoted; however, any + dollar signs appearing in filenames will not be quoted, + either. This is active only when bash is using back- + slashes to quote completed filenames. This variable is + set by default, which is the default bash behavior in versions through 4.2. ddiirreexxppaanndd - If set, bbaasshh replaces directory names with the results - of word expansion when performing filename completion. - This changes the contents of the readline editing buf- - fer. If not set, bbaasshh attempts to preserve what the + If set, bbaasshh replaces directory names with the results + of word expansion when performing filename completion. + This changes the contents of the readline editing buf- + fer. If not set, bbaasshh attempts to preserve what the user typed. ddiirrssppeellll - If set, bbaasshh attempts spelling correction on directory - names during word completion if the directory name ini- + If set, bbaasshh attempts spelling correction on directory + names during word completion if the directory name ini- tially supplied does not exist. - ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in - the results of pathname expansion. The filenames ````..'''' - and ````....'''' must always be matched explicitly, even if + ddoottgglloobb If set, bbaasshh includes filenames beginning with a `.' in + the results of pathname expansion. The filenames ````..'''' + and ````....'''' must always be matched explicitly, even if ddoottgglloobb is set. eexxeeccffaaiill If set, a non-interactive shell will not exit if it can- - not execute the file specified as an argument to the - eexxeecc builtin command. An interactive shell does not + not execute the file specified as an argument to the + eexxeecc builtin command. An interactive shell does not exit if eexxeecc fails. eexxppaanndd__aalliiaasseess - If set, aliases are expanded as described above under + If set, aliases are expanded as described above under AALLIIAASSEESS. This option is enabled by default for interac- tive shells. eexxttddeebbuugg - If set at shell invocation, arrange to execute the - debugger profile before the shell starts, identical to - the ----ddeebbuuggggeerr option. If set after invocation, behav- + If set at shell invocation, arrange to execute the + debugger profile before the shell starts, identical to + the ----ddeebbuuggggeerr option. If set after invocation, behav- ior intended for use by debuggers is enabled: 11.. The --FF option to the ddeeccllaarree builtin displays the source file name and line number corresponding to each function name supplied as an argument. - 22.. If the command run by the DDEEBBUUGG trap returns a - non-zero value, the next command is skipped and + 22.. If the command run by the DDEEBBUUGG trap returns a + non-zero value, the next command is skipped and not executed. - 33.. If the command run by the DDEEBBUUGG trap returns a - value of 2, and the shell is executing in a sub- - routine (a shell function or a shell script exe- - cuted by the .. or ssoouurrccee builtins), the shell + 33.. If the command run by the DDEEBBUUGG trap returns a + value of 2, and the shell is executing in a sub- + routine (a shell function or a shell script exe- + cuted by the .. or ssoouurrccee builtins), the shell simulates a call to rreettuurrnn. - 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described + 44.. BBAASSHH__AARRGGCC and BBAASSHH__AARRGGVV are updated as described in their descriptions above. - 55.. Function tracing is enabled: command substitu- + 55.. Function tracing is enabled: command substitu- tion, shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the DDEEBBUUGG and RREETTUURRNN traps. - 66.. Error tracing is enabled: command substitution, - shell functions, and subshells invoked with (( + 66.. Error tracing is enabled: command substitution, + shell functions, and subshells invoked with (( _c_o_m_m_a_n_d )) inherit the EERRRR trap. eexxttgglloobb If set, the extended pattern matching features described above under PPaatthhnnaammee EExxppaannssiioonn are enabled. eexxttqquuoottee - If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed - within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double + If set, $$'_s_t_r_i_n_g' and $$"_s_t_r_i_n_g" quoting is performed + within $${{_p_a_r_a_m_e_t_e_r}} expansions enclosed in double quotes. This option is enabled by default. ffaaiillgglloobb - If set, patterns which fail to match filenames during + If set, patterns which fail to match filenames during pathname expansion result in an expansion error. ffoorrccee__ffiiggnnoorree - If set, the suffixes specified by the FFIIGGNNOORREE shell - variable cause words to be ignored when performing word + If set, the suffixes specified by the FFIIGGNNOORREE shell + variable cause words to be ignored when performing word completion even if the ignored words are the only possi- ble completions. See SSHHEELLLL VVAARRIIAABBLLEESS above for a - description of FFIIGGNNOORREE. This option is enabled by + description of FFIIGGNNOORREE. This option is enabled by default. gglloobbaasscciiiirraannggeess - If set, range expressions used in pattern matching - bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave - as if in the traditional C locale when performing com- + If set, range expressions used in pattern matching + bracket expressions (see PPaatttteerrnn MMaattcchhiinngg above) behave + as if in the traditional C locale when performing com- parisons. That is, the current locale's collating - sequence is not taken into account, so bb will not col- - late between AA and BB, and upper-case and lower-case + sequence is not taken into account, so bb will not col- + late between AA and BB, and upper-case and lower-case ASCII characters will collate together. gglloobbssttaarr If set, the pattern **** used in a pathname expansion con- - text will match all files and zero or more directories - and subdirectories. If the pattern is followed by a //, + text will match all files and zero or more directories + and subdirectories. If the pattern is followed by a //, only directories and subdirectories match. ggnnuu__eerrrrffmmtt If set, shell error messages are written in the standard GNU error message format. hhiissttaappppeenndd - If set, the history list is appended to the file named - by the value of the HHIISSTTFFIILLEE variable when the shell + If set, the history list is appended to the file named + by the value of the HHIISSTTFFIILLEE variable when the shell exits, rather than overwriting the file. hhiissttrreeeeddiitt - If set, and rreeaaddlliinnee is being used, a user is given the + If set, and rreeaaddlliinnee is being used, a user is given the opportunity to re-edit a failed history substitution. hhiissttvveerriiffyy - If set, and rreeaaddlliinnee is being used, the results of his- - tory substitution are not immediately passed to the - shell parser. Instead, the resulting line is loaded + If set, and rreeaaddlliinnee is being used, the results of his- + tory substitution are not immediately passed to the + shell parser. Instead, the resulting line is loaded into the rreeaaddlliinnee editing buffer, allowing further modi- fication. hhoossttccoommpplleettee If set, and rreeaaddlliinnee is being used, bbaasshh will attempt to - perform hostname completion when a word containing a @@ - is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE + perform hostname completion when a word containing a @@ + is being completed (see CCoommpplleettiinngg under RREEAADDLLIINNEE above). This is enabled by default. hhuuppoonneexxiitt If set, bbaasshh will send SSIIGGHHUUPP to all jobs when an inter- active login shell exits. iinnhheerriitt__eerrrreexxiitt - If set, command substitution inherits the value of the - eerrrreexxiitt option, instead of unsetting it in the subshell - environment. This option is enabled when _p_o_s_i_x _m_o_d_e is + If set, command substitution inherits the value of the + eerrrreexxiitt option, instead of unsetting it in the subshell + environment. This option is enabled when _p_o_s_i_x _m_o_d_e is enabled. iinntteerraaccttiivvee__ccoommmmeennttss If set, allow a word beginning with ## to cause that word - and all remaining characters on that line to be ignored - in an interactive shell (see CCOOMMMMEENNTTSS above). This + and all remaining characters on that line to be ignored + in an interactive shell (see CCOOMMMMEENNTTSS above). This option is enabled by default. llaassttppiippee - 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. - lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line + lliitthhiisstt If set, and the ccmmddhhiisstt option is enabled, multi-line commands are saved to the history with embedded newlines rather than using semicolon separators where possible. llooccaallvvaarr__iinnhheerriitt 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 + scope before any new value is assigned. The nameref attribute is not inherited. llooggiinn__sshheellll - The shell sets this option if it is started as a login - shell (see IINNVVOOCCAATTIIOONN above). The value may not be + The shell sets this option if it is started as a login + shell (see IINNVVOOCCAATTIIOONN above). The value may not be changed. mmaaiillwwaarrnn - If set, and a file that bbaasshh is checking for mail has - been accessed since the last time it was checked, the - message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis- + If set, and a file that bbaasshh is checking for mail has + been accessed since the last time it was checked, the + message ``The mail in _m_a_i_l_f_i_l_e has been read'' is dis- played. nnoo__eemmppttyy__ccmmdd__ccoommpplleettiioonn - If set, and rreeaaddlliinnee is being used, bbaasshh will not + If set, and rreeaaddlliinnee is being used, bbaasshh will not attempt to search the PPAATTHH for possible completions when completion is attempted on an empty line. nnooccaasseegglloobb - If set, bbaasshh matches filenames in a case-insensitive + If set, bbaasshh matches filenames in a case-insensitive fashion when performing pathname expansion (see PPaatthhnnaammee EExxppaannssiioonn above). nnooccaasseemmaattcchh - If set, bbaasshh matches patterns in a case-insensitive + If set, bbaasshh matches patterns in a case-insensitive fashion when performing matching while executing ccaassee or [[[[ 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. nnuullllgglloobb - If set, bbaasshh allows patterns which match no files (see - PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, + If set, bbaasshh allows patterns which match no files (see + PPaatthhnnaammee EExxppaannssiioonn above) to expand to a null string, rather than themselves. pprrooggccoommpp If set, the programmable completion facilities (see PPrroo-- @@ -1555,50 +1566,50 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS enabled by default. pprroommppttvvaarrss If set, prompt strings undergo parameter expansion, com- - mand substitution, arithmetic expansion, and quote - removal after being expanded as described in PPRROOMMPPTTIINNGG + mand substitution, arithmetic expansion, and quote + removal after being expanded as described in PPRROOMMPPTTIINNGG above. This option is enabled by default. rreessttrriicctteedd__sshheellll - The shell sets this option if it is started in + The shell sets this option if it is started in restricted mode (see RREESSTTRRIICCTTEEDD SSHHEELLLL 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. sshhiifftt__vveerrbboossee - If set, the sshhiifftt builtin prints an error message when + If set, the sshhiifftt builtin prints an error message when the shift count exceeds the number of positional parame- ters. ssoouurrcceeppaatthh If set, the ssoouurrccee (..) builtin uses the value of PPAATTHH 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. xxppgg__eecchhoo - If set, the eecchhoo builtin expands backslash-escape + If set, the eecchhoo builtin expands backslash-escape sequences by default. ssuussppeenndd [--ff] - Suspend the execution of this shell until it receives a SSIIGGCCOONNTT + Suspend the execution of this shell until it receives a SSIIGGCCOONNTT signal. A login shell cannot be suspended; the --ff 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 --ff is not sup- + tus is 0 unless the shell is a login shell and --ff is not sup- plied, or if job control is not enabled. tteesstt _e_x_p_r [[ _e_x_p_r ]] Return a status of 0 (true) or 1 (false) depending on the evalu- ation of the conditional expression _e_x_p_r. Each operator and op- - erand must be a separate argument. Expressions are composed of - the primaries described above under CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. - tteesstt 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 CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS. + tteesstt does not accept any options, nor does it accept and ignore an argument of ---- 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. !! _e_x_p_r True if _e_x_p_r is false. (( _e_x_p_r )) - Returns the value of _e_x_p_r. This may be used to override + Returns the value of _e_x_p_r. This may be used to override the normal precedence of operators. _e_x_p_r_1 -aa _e_x_p_r_2 True if both _e_x_p_r_1 and _e_x_p_r_2 are true. @@ -1615,120 +1626,120 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS null. 2 arguments If the first argument is !!, 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 CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, 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 CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, 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 CCOONNDDIITTIIOONNAALL EEXXPPRREESSSSIIOONNSS, the result of the expression is the result of the binary test - using the first and third arguments as operands. The --aa - and --oo 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 + using the first and third arguments as operands. The --aa + and --oo 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. Other- + is the one-argument test of the second argument. Other- wise, the expression is false. 4 arguments If the first argument is !!, 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 tteesstt or [[, the << and >> operators sort lexico- + When used with tteesstt or [[, the << and >> operators sort lexico- graphically using ASCII ordering. - ttiimmeess Print the accumulated user and system times for the shell and + ttiimmeess Print the accumulated user and system times for the shell and for processes run from the shell. The return status is 0. ttrraapp [--llpp] [[_a_r_g] _s_i_g_s_p_e_c ...] - The command _a_r_g is to be read and executed when the shell - receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a - single _s_i_g_s_p_e_c) or --, each specified signal is reset to its - original disposition (the value it had upon entrance to the - shell). If _a_r_g is the null string the signal specified by each - _s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes. - If _a_r_g is not present and --pp has been supplied, then the trap - commands associated with each _s_i_g_s_p_e_c are displayed. If no - arguments are supplied or if only --pp is given, ttrraapp prints the - list of commands associated with each signal. The --ll option - causes the shell to print a list of signal names and their cor- - responding numbers. Each _s_i_g_s_p_e_c is either a signal name - defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are + The command _a_r_g is to be read and executed when the shell + receives signal(s) _s_i_g_s_p_e_c. If _a_r_g is absent (and there is a + single _s_i_g_s_p_e_c) or --, each specified signal is reset to its + original disposition (the value it had upon entrance to the + shell). If _a_r_g is the null string the signal specified by each + _s_i_g_s_p_e_c is ignored by the shell and by the commands it invokes. + If _a_r_g is not present and --pp has been supplied, then the trap + commands associated with each _s_i_g_s_p_e_c are displayed. If no + arguments are supplied or if only --pp is given, ttrraapp prints the + list of commands associated with each signal. The --ll option + causes the shell to print a list of signal names and their cor- + responding numbers. Each _s_i_g_s_p_e_c is either a signal name + defined in <_s_i_g_n_a_l_._h>, or a signal number. Signal names are case insensitive and the SSIIGG prefix is optional. - If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit - from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- - cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, - _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the - first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR - above). Refer to the description of the eexxttddeebbuugg option to the + If a _s_i_g_s_p_e_c is EEXXIITT (0) the command _a_r_g is executed on exit + from the shell. If a _s_i_g_s_p_e_c is DDEEBBUUGG, the command _a_r_g is exe- + cuted before every _s_i_m_p_l_e _c_o_m_m_a_n_d, _f_o_r command, _c_a_s_e command, + _s_e_l_e_c_t command, every arithmetic _f_o_r command, and before the + first command executes in a shell function (see SSHHEELLLL GGRRAAMMMMAARR + above). Refer to the description of the eexxttddeebbuugg option to the sshhoopptt builtin for details of its effect on the DDEEBBUUGG trap. If a _s_i_g_s_p_e_c is RREETTUURRNN, the command _a_r_g is executed each time a shell function or a script executed with the .. or ssoouurrccee builtins fin- ishes executing. - If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a + If a _s_i_g_s_p_e_c is EERRRR, the command _a_r_g is executed whenever a pipeline (which may consist of a single simple command), a list, or a compound command returns a non-zero exit status, subject to - the following conditions. The EERRRR trap is not executed if the + the following conditions. The EERRRR trap is not executed if the failed command is part of the command list immediately following - a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, + a wwhhiillee or uunnttiill keyword, part of the test in an _i_f statement, part of a command executed in a &&&& or |||| list except the command - following the final &&&& or ||||, any command in a pipeline but the - last, or if the command's return value is being inverted using - !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) + following the final &&&& or ||||, any command in a pipeline but the + last, or if the command's return value is being inverted using + !!. These are the same conditions obeyed by the eerrrreexxiitt (--ee) 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 _s_i_g_s_p_e_c is + one is created. The return status is false if any _s_i_g_s_p_e_c is invalid; otherwise ttrraapp returns true. ttyyppee [--aaffttppPP] _n_a_m_e [_n_a_m_e ...] - With no options, indicate how each _n_a_m_e would be interpreted if + With no options, indicate how each _n_a_m_e would be interpreted if used as a command name. If the --tt option is used, ttyyppee prints a - string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or - _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function, - builtin, or disk file, respectively. If the _n_a_m_e is not found, - then nothing is printed, and an exit status of false is - returned. If the --pp option is used, ttyyppee either returns the + string which is one of _a_l_i_a_s, _k_e_y_w_o_r_d, _f_u_n_c_t_i_o_n, _b_u_i_l_t_i_n, or + _f_i_l_e if _n_a_m_e is an alias, shell reserved word, function, + builtin, or disk file, respectively. If the _n_a_m_e is not found, + then nothing is printed, and an exit status of false is + returned. If the --pp option is used, ttyyppee either returns the name of the disk file that would be executed if _n_a_m_e were speci- fied as a command name, or nothing if ``type -t name'' would not - return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e, + return _f_i_l_e. The --PP option forces a PPAATTHH search for each _n_a_m_e, even if ``type -t name'' would not return _f_i_l_e. If a command is hashed, --pp and --PP print the hashed value, which is not necessar- - ily the file that appears first in PPAATTHH. If the --aa option is - used, ttyyppee prints all of the places that contain an executable + ily the file that appears first in PPAATTHH. If the --aa option is + used, ttyyppee prints all of the places that contain an executable named _n_a_m_e. This includes aliases and functions, if and only if the --pp option is not also used. The table of hashed commands is - not consulted when using --aa. The --ff option suppresses shell + not consulted when using --aa. The --ff option suppresses shell function lookup, as with the ccoommmmaanndd builtin. ttyyppee returns true if all of the arguments are found, false if any are not found. uulliimmiitt [--HHSSaabbccddeeffiikkllmmnnppqqrrssttuuvvxxPPTT [_l_i_m_i_t]] - 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 --HH and --SS 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 --HH nor --SS 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 --HH nor --SS is speci- fied, both the soft and hard limits are set. The value of _l_i_m_i_t can be a number in the unit specified for the resource or one of the special values hhaarrdd, ssoofftt, or uunnlliimmiitteedd, which stand for the - current hard limit, the current soft limit, and no limit, - respectively. If _l_i_m_i_t is omitted, the current value of the - soft limit of the resource is printed, unless the --HH option is + current hard limit, the current soft limit, and no limit, + respectively. If _l_i_m_i_t is omitted, the current value of the + soft limit of the resource is printed, unless the --HH 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: @@ -1737,12 +1748,12 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --cc The maximum size of core files created --dd The maximum size of a process's data segment --ee The maximum scheduling priority ("nice") - --ff The maximum size of files written by the shell and its + --ff The maximum size of files written by the shell and its children --ii The maximum number of pending signals --kk The maximum number of kqueues that may be allocated --ll The maximum size that may be locked into memory - --mm The maximum resident set size (many systems do not honor + --mm The maximum resident set size (many systems do not honor this limit) --nn The maximum number of open file descriptors (most systems do not allow this value to be set) @@ -1751,53 +1762,53 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS --rr The maximum real-time scheduling priority --ss The maximum stack size --tt The maximum amount of cpu time in seconds - --uu The maximum number of processes available to a single + --uu The maximum number of processes available to a single user - --vv The maximum amount of virtual memory available to the + --vv The maximum amount of virtual memory available to the shell and, on some systems, to its children --xx The maximum number of file locks --PP The maximum number of pseudoterminals --TT The maximum number of threads - If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the - new value of the specified resource. If no option is given, - then --ff is assumed. Values are in 1024-byte increments, except - for --tt, which is in seconds; --pp, which is in units of 512-byte - blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values; - and, when in Posix mode, --cc and --ff, which are in 512-byte incre- + If _l_i_m_i_t is given, and the --aa option is not used, _l_i_m_i_t is the + new value of the specified resource. If no option is given, + then --ff is assumed. Values are in 1024-byte increments, except + for --tt, which is in seconds; --pp, which is in units of 512-byte + blocks; --PP, --TT, --bb, --kk, --nn, and --uu, which are unscaled values; + and, when in posix mode, --cc and --ff, 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. uummaasskk [--pp] [--SS] [_m_o_d_e] The user file-creation mask is set to _m_o_d_e. If _m_o_d_e 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 - _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is - printed. The --SS option causes the mask to be printed in sym- - bolic form; the default output is an octal number. If the --pp + a digit, it is interpreted as an octal number; otherwise it is + interpreted as a symbolic mode mask similar to that accepted by + _c_h_m_o_d(1). If _m_o_d_e is omitted, the current value of the mask is + printed. The --SS option causes the mask to be printed in sym- + bolic form; the default output is an octal number. If the --pp option is supplied, and _m_o_d_e 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 _m_o_d_e argument was supplied, + was successfully changed or if no _m_o_d_e argument was supplied, and false otherwise. uunnaalliiaass [-aa] [_n_a_m_e ...] - Remove each _n_a_m_e from the list of defined aliases. If --aa is - supplied, all alias definitions are removed. The return value + Remove each _n_a_m_e from the list of defined aliases. If --aa is + supplied, all alias definitions are removed. The return value is true unless a supplied _n_a_m_e is not a defined alias. uunnsseett [-ffvv] [-nn] [_n_a_m_e ...] - For each _n_a_m_e, remove the corresponding variable or function. + For each _n_a_m_e, remove the corresponding variable or function. If the --vv option is given, each _n_a_m_e refers to a shell variable, - and that variable is removed. Read-only variables may not be - unset. If --ff is specified, each _n_a_m_e refers to a shell func- - tion, and the function definition is removed. If the --nn option - is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, - _n_a_m_e will be unset rather than the variable it references. --nn - has no effect if the --ff option is supplied. If no options are - supplied, each _n_a_m_e 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 CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- + and that variable is removed. Read-only variables may not be + unset. If --ff is specified, each _n_a_m_e refers to a shell func- + tion, and the function definition is removed. If the --nn option + is supplied, and _n_a_m_e is a variable with the _n_a_m_e_r_e_f attribute, + _n_a_m_e will be unset rather than the variable it references. --nn + has no effect if the --ff option is supplied. If no options are + supplied, each _n_a_m_e 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 CCOOMMPP__WWOORRDDBBRREEAAKKSS, RRAANN-- DDOOMM, SSEECCOONNDDSS, LLIINNEENNOO, HHIISSTTCCMMDD, FFUUNNCCNNAAMMEE, GGRROOUUPPSS, or DDIIRRSSTTAACCKK are unset, they lose their special properties, even if they are sub- sequently reset. The exit status is true unless a _n_a_m_e is read- @@ -1805,16 +1816,16 @@ BBAASSHH BBUUIILLTTIINN CCOOMMMMAANNDDSS wwaaiitt [--ffnn] [_i_d _._._.] Wait for each specified child process and return its termination - status. Each _i_d may be a process ID or a job specification; if - a job spec is given, all processes in that job's pipeline are + status. Each _i_d 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_d is not given, all currently active child pro- cesses are waited for, and the return status is zero. If the --nn - option is supplied, wwaaiitt waits for any job to terminate and - returns its exit status. If the --ff option is supplied, and job + option is supplied, wwaaiitt waits for any job to terminate and + returns its exit status. If the --ff option is supplied, and job control is enabled, wwaaiitt forces _i_d to terminate before returning - its status, instead of returning when it changes status. If _i_d - specifies a non-existent process or job, the return status is - 127. Otherwise, the return status is the exit status of the + its status, instead of returning when it changes status. If _i_d + 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. SSEEEE AALLSSOO diff --git a/doc/builtins.ps b/doc/builtins.ps index df9ff20ac..e7e6963e6 100644 --- a/doc/builtins.ps +++ b/doc/builtins.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Mon Mar 19 09:43:23 2018 +%%CreationDate: Fri Sep 7 15:34:15 2018 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%+ font Times-Italic @@ -595,51 +595,55 @@ 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-3.728 E F3(comp-option)3.728 E F0 3.728(][)C F2(\255DE)-3.728 E -F0 3.728(][)C F2-3.728 E F3(action)3.728 E F0 3.728(][)C F2 --3.728 E F3(globpat)3.728 E F0 3.729(][)C F2-3.729 E F3(wor)3.729 -E(dlist)-.37 E F0 3.729(][)C F2-3.729 E F3(func-)3.729 E(tion)108 -518.4 Q F0 2.5(][)C F2-2.5 E F3(command)2.5 E F0(])A([)144 530.4 Q -F2A F3(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F3(pr)2.5 E -(e\214x)-.37 E F0 2.5(][)C F2-2.5 E F3(suf)2.5 E<8c78>-.18 E F0(]) -A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2(complete \255pr)108 -542.4 Q F0([)2.5 E F2(\255DE)A F0 2.5(][)C F3(name)-2.5 E F0(...])2.5 E -.634(Specify ho)144 554.4 R 3.134(wa)-.25 G -.18(rg)-3.134 G .634 -(uments to each).18 F F3(name)3.134 E F0 .634(should be completed.)3.134 -F .633(If the)5.634 F F23.133 E F0 .633 -(option is supplied, or if no)3.133 F .139(options are supplied, e)144 -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 F22.81 E F0 .31(option remo)2.81 F -.15(ve) --.15 G 2.81(sac).15 G .31(ompletion speci\214cation for each)-2.81 F F3 -(name)2.81 E F0 2.81(,o)C 1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E -F3(name)2.81 E F0(s)A 1.346 -(are supplied, all completion speci\214cations.)144 590.4 R(The)6.347 E -F23.847 E F0 1.347(option indicates that the remaining options) -3.847 F .5(and actions should apply to the `)144 602.4 R(`def)-.74 E +(complete)108 506.4 Q F0([)3.404 E F2(\255abcdefgjksuv)A F0 3.404(][)C +F2-3.404 E F3(comp-option)3.404 E F0 3.404(][)C F2(\255DEI)-3.404 +E F0 3.404(][)C F2-3.404 E F3(action)3.404 E F0 3.404(][)C F2 +-3.404 E F3(globpat)3.404 E F0 3.404(][)C F2-3.404 E F3(wor) +3.404 E(dlist)-.37 E F0 3.405(][)C F2-3.405 E F3(func-)3.405 E +(tion)108 518.4 Q F0 2.5(][)C F2-2.5 E F3(command)2.5 E F0(])A([) +144 530.4 Q F2A F3(\214lterpat)2.5 E F0 2.5(][)C F2-2.5 E F3 +(pr)2.5 E(e\214x)-.37 E F0 2.5(][)C F2-2.5 E F3(suf)2.5 E<8c78> +-.18 E F0(])A F3(name)2.5 E F0([)2.5 E F3(name ...)A F0(])A F2 +(complete \255pr)108 542.4 Q F0([)2.5 E F2(\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 F23.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 F22.81 E F0 .31 +(option remo)2.81 F -.15(ve)-.15 G 2.81(sac).15 G .31 +(ompletion speci\214cation for each)-2.81 F F3(name)2.81 E F0 2.81(,o)C +1.11 -.4(r, i)-2.81 H 2.81(fn).4 G(o)-2.81 E F3(name)2.81 E F0(s)A 1.207 +(are supplied, all completion speci\214cations.)144 590.4 R(The)6.207 E +F23.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 F23.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 +F22.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 +3.208 E F0 .708(option tak)3.208 F .708(es precedence o)-.1 F -.15 +(ve)-.15 G(r).15 E F23.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 +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 F23.207 E F0(,)A F2144 686.4 Q F0 2.603(,o)C(r) +-2.603 E F22.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 F23.055 E F0(,)A F23.055 E F0 3.055 -(,a)C(nd)-3.055 E F23.055 E F0 .722(options \(and, if necessary) -144 710.4 R 3.222(,t)-.65 G(he)-3.222 E F23.222 E F0(and)3.222 E -F23.222 E F0 .723 -(options\) should be quoted to protect them from e)3.222 F(xpan-)-.15 E -(sion before the)144 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 5.0)72 768 Q +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 @@ -647,1453 +651,1451 @@ BP %%EndPageSetup /F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 (TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 -E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q/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 F13.056 E F0(,)A F13.056 E F0 +3.056(,a)C(nd)-3.056 E F13.056 E F0 .723 +(options \(and, if necessary)144 120 R 3.223(,t)-.65 G(he)-3.223 E F1 +3.223 E F0(and)3.223 E F13.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 F1144 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 F1144 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 F1144 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 -2.5 E F0(.)A F1(arrayv)184 396 Q(ar)-.1 E F0(Array v)224 408 Q -(ariable names.)-.25 E F1(binding)184 420 Q(Readline)224 420 Q F0 -.1 -(ke)2.5 G 2.5(yb)-.05 G(inding names.)-2.5 E F1 -.2(bu)184 432 S(iltin) -.2 E F0(Names of shell b)224 432 Q(uiltin commands.)-.2 E -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(command)184 444 -Q F0(Command names.)224 456 Q(May also be speci\214ed as)5 E F12.5 -E F0(.)A F1(dir)184 468 Q(ectory)-.18 E F0(Directory names.)224 480 Q -(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(disabled)184 492 -Q F0(Names of disabled shell b)224 504 Q(uiltins.)-.2 E F1(enabled)184 -516 Q F0(Names of enabled shell b)224 516 Q(uiltins.)-.2 E F1(export)184 -528 Q F0(Names of e)224 528 Q(xported shell v)-.15 E 2.5(ariables. May) +444 Q F0(Alias names.)224 444 Q(May also be speci\214ed as)5 E F1 +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 F12.5 E F0(.)A F1(command)184 504 +Q F0(Command names.)224 516 Q(May also be speci\214ed as)5 E F12.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 F12.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 F12.5 E F0(.)A F1(\214le)184 -540 Q F0(File names.)224 540 Q(May also be speci\214ed as)5 E F1 -2.5 E F0(.)A F1(function)184 552 Q F0(Names of shell functions.)224 564 -Q F1(gr)184 576 Q(oup)-.18 E F0(Group names.)224 576 Q +600 Q F0(File names.)224 600 Q(May also be speci\214ed as)5 E F1 +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 F12.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 F12.5 E F0(.)A F1 -.1(ke)184 648 S -(yw).1 E(ord)-.1 E F0(Shell reserv)224 660 Q(ed w)-.15 E 2.5(ords. May) --.1 F(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1(running)184 -672 Q F0(Names of running jobs, if job control is acti)224 672 Q -.15 -(ve)-.25 G(.).15 E F1(ser)184 684 Q(vice)-.1 E F0(Service names.)224 684 -Q(May also be speci\214ed as)5 E F12.5 E F0(.)A F1(setopt)184 696 -Q F0 -1.11(Va)224 696 S(lid ar)1.11 E(guments for the)-.18 E F12.5 -E F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 -(shopt)184 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 5.0)72 768 Q -(2004 Apr 20)149.565 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 F12.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 F12.5 E F0(.)A F1 -.1(va)184 120 S -(riable).1 E F0(Names of all shell v)224 120 Q 2.5(ariables. May)-.25 F -(also be speci\214ed as)2.5 E F12.5 E F0(.)A F1144 132 Q/F2 -10/Times-Italic@0 SF(command)2.5 E(command)184 144 Q F0 1.056(is e)3.556 -F -.15(xe)-.15 G 1.056(cuted in a subshell en).15 F 1.056 +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 F12.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 F12.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 F12.5 E +F0(option to the)2.5 E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E F1 +(shopt)184 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 F12.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 F12.5 E F0(.)A F1144 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 F1144 168 Q F2(function)2.5 E F0 .113 -(The shell function)184 180 R F2(function)2.614 E F0 .114(is e)2.614 F +184 228 Q F1144 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 F1144 252 Q F2(globpat)2.5 E F0 1.008 -(The pathname e)184 264 R 1.008(xpansion pattern)-.15 F F2(globpat)3.507 -E F0 1.007(is e)3.507 F 1.007(xpanded to generate the possible comple-) --.15 F(tions.)184 276 Q F1144 288 Q F2(pr)2.5 E(e\214x)-.37 E(pr) -184 300 Q(e\214x)-.37 E F0 .534(is added at the be)3.034 F .534 +(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 F1144 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 F1144 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 F1144 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 F1144 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 F1144 336 Q F2(wor)2.5 E -(dlist)-.37 E F0(The)184 348 Q F2(wor)3.64 E(dlist)-.37 E F0 1.14 -(is split using the characters in the)3.64 F F3(IFS)3.64 E F0 1.139 -(special v)3.39 F 1.139(ariable as delimiters, and)-.25 F .98 -(each resultant w)184 360 R .98(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.481(,i)C 3.481(no)-3.481 G .981(rder to)-3.481 F(pro)184 372 Q .766 -(vide a mechanism for the w)-.15 F .765 +E .3 -.15(ve b)-.2 H(een applied.).15 E F1144 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 384 S 1.964(lue of).25 F F3(IFS)4.464 E/F4 9/Times-Roman@0 SF(.) +(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.464 F(match the w)184 396 Q(ord being completed.)-.1 E F1144 408 -Q F2(\214lterpat)2.5 E(\214lterpat)184 420 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 432 R 1.596 -(guments, and each completion)-.18 F(matching)184 444 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 456 Q 2.5(yc)-.15 G +6.465 F(match the w)184 468 Q(ord being completed.)-.1 E F1144 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 472.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 F12.967 E F0 -(or)2.967 E F12.967 E F0 .467(is sup-)2.967 F 1.362 -(plied without a)144 484.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 496.8 Q F0 +(lid option is supplied, an option other than).25 F F12.966 E F0 +(or)2.966 E F12.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 513.6 Q F0([)2.5 E F1A F2(option)2.5 E F0 2.5(][)C -F1(\255DE)-2.5 E F0 2.5(][)C F1(+o)-2.5 E F2(option)2.5 E F0 2.5(][)C F2 -(name)-2.5 E F0(])A .447(Modify completion options for each)144 525.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 537.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 549.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 F1A 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 +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 .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 561.6 Q F0 -.2(bu) -2.798 G .298(iltin described abo).2 F -.15(ve)-.15 G 5.297(.T).15 G(he) --5.297 E F12.797 E F0 .297 -(option indicates that the remaining options should apply to)2.797 F -1.227(the `)144 573.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 F12.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 585.6 R 2.178 -(viously been de\214ned.)-.25 F(The)7.178 E F14.678 E F0 2.177 -(option indicates that the remaining options)4.677 F(should apply to `) -144 597.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 621.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 F14.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 F13.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 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 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.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 SF3.709 E F0 3.709(1. If)3.709 F F2(n)4.069 E F0 1.209 -(is greater than the number of enclosing)3.949 F .514 -(loops, the last enclosing loop \(the `)144 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(2004 Apr 20)149.565 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/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-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-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 F13.483 E F0 -.983(option will display the attrib)3.483 F .983(utes and v)-.2 F .982 -(alues of each)-.25 F F2(name)3.482 E F0 5.982(.W).18 G(hen)-5.982 E F1 -3.482 E F0 .982(is used)3.482 F(with)144 132 Q F2(name)2.774 E F0 -(ar)2.774 E .274(guments, additional options, other than)-.18 F F1 -2.775 E F0(and)2.775 E F12.775 E F0 2.775(,a)C .275(re ignored.) --2.775 F(When)5.275 E F12.775 E F0 .275(is supplied)2.775 F -(without)144 144 Q F2(name)4.814 E F0(ar)4.814 E 2.314 +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 SF3.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-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 +-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 F23.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 +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 +2.775 E F0(and)2.775 E F22.775 E F0 2.775(,a)C .275 +(re ignored.)-2.775 F(When)5.275 E F22.775 E F0 .275(is supplied) +2.775 F(without)144 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 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 F13.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 F13.12 E F0 .62(option will restrict the display)3.12 F -1.29(to shell functions.)144 180 R(The)6.29 E F13.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 +(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 F23.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 F23.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 F23.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 -204 R F2(name)4.19 E F0 1.69(is de\214ned are displayed as well.)4.19 F -(The)6.69 E F14.19 E F0(option)4.19 E(implies)144 216 Q F1 -3.892 E F0 6.392(.T)C(he)-6.392 E F13.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 F24.19 E F0(option)4.19 E(implies)144 297.6 Q F2 +3.892 E F0 6.392(.T)C(he)-6.392 E F23.892 E F0 1.391 (option forces v)3.892 F 1.391 (ariables to be created or modi\214ed at the global scope, e)-.25 F -.15 -(ve)-.25 G(n).15 E(when)144 228 Q F1(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 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 -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 F1144 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 F1144 288 Q F0(Use function names only)180 288 Q(.)-.65 -E F1144 300 Q F0 .557(The v)180 300 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 +F2144 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 F2144 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 F2144 369.6 Q F0(Use function names only) +180 369.6 Q(.)-.65 E F2144 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 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 F1144 324 Q F0 .91 -(When the v)180 324 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 F2144 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 336 R -(upper)2.5 E(-case attrib)-.2 E(ute is disabled.)-.2 E F1144 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 +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 F2144 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 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 F12.726 E F0(attrib) -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 +1.519(That other v)180 441.6 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 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 F22.726 E F0(attrib) +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 396 Q(ariables.)-.25 E F1144 408 Q F0 -(Mak)180 408 Q(e)-.1 E F2(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 F2144 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 420 -Q F1144 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 F1144 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 F1144 480 Q -F0(Mark)180 480 Q F2(name)2.5 E F0 2.5(sf)C(or e)-2.5 E +2.547(alues by subsequent)-.25 F(assignment statements or unset.)180 +501.6 Q F2144 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 F2144 +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 +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 .121 -(Using `+' instead of `\255' turns of)144 496.8 R 2.621(ft)-.25 G .121 +(Using `+' instead of `\255' turns of)144 578.4 R 2.621(ft)-.25 G .121 (he attrib)-2.621 F .121(ute instead, with the e)-.2 F .12 -(xceptions that)-.15 F F1(+a)2.62 E F0 .12(may not be used)2.62 F .644 -(to destro)144 508.8 R 3.144(ya)-.1 G 3.144(na)-3.144 G .644(rray v) --3.144 F .644(ariable and)-.25 F F1(+r)3.145 E F0 .645(will not remo) +(xceptions that)-.15 F F2(+a)2.62 E F0 .12(may not be used)2.62 F .644 +(to destro)144 590.4 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 520.8 Q F1 -(declar)2.835 E(e)-.18 E F0(and)2.835 E F1(typeset)2.835 E F0(mak)2.835 -E 2.835(ee)-.1 G(ach)-2.835 E F2(name)2.835 E F0 .335 -(local, as with the)2.835 F F1(local)2.835 E F0 .335 -(command, unless the)2.835 F F12.835 E F0(option)2.835 E 1.282 -(is supplied.)144 532.8 R 1.282(If a v)6.282 F 1.283 -(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F2(value)A F0 3.783 +(ute. When)-.2 F .645(used in a func-)3.145 F(tion,)144 602.4 Q F2 +(declar)2.835 E(e)-.18 E F0(and)2.835 E F2(typeset)2.835 E F0(mak)2.835 +E 2.835(ee)-.1 G(ach)-2.835 E F1(name)2.835 E F0 .335 +(local, as with the)2.835 F F2(local)2.835 E F0 .335 +(command, unless the)2.835 F F22.835 E F0(option)2.835 E 1.282 +(is supplied.)144 614.4 R 1.282(If a v)6.282 F 1.283 +(ariable name is follo)-.25 F 1.283(wed by =)-.25 F F1(value)A F0 3.783 (,t)C 1.283(he v)-3.783 F 1.283(alue of the v)-.25 F 1.283 -(ariable is set to)-.25 F F2(value)3.783 E F0(.)A .927(When using)144 -544.8 R F13.427 E F0(or)3.427 E F13.427 E F0 .926 +(ariable is set to)-.25 F F1(value)3.783 E F0(.)A .927(When using)144 +626.4 R F23.427 E F0(or)3.427 E F23.427 E F0 .926 (and the compound assignment syntax to create array v)3.427 F .926 -(ariables, additional)-.25 F(attrib)144 556.8 Q .592(utes do not tak)-.2 +(ariables, additional)-.25 F(attrib)144 638.4 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 568.8 R/F4 10/Courier@0 SF .428(\255f foo=bar)2.929 F F0 2.928(,a)C +144 650.4 R/F5 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 -580.8 R .062(alue to a readonly v)-.25 F .063 +662.4 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 592.8 R F1 +(able without using the compound assignment syntax \(see)144 674.4 R F2 (Arrays)2.602 E F0(abo)2.602 E -.15(ve)-.15 G .102(\), one of the).15 F -F2(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 604.8 S .171 +F1(names)2.602 E F0 .101(is not a)2.602 F -.25(va)144 686.4 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 616.8 R 3.46(fa) +(ariable, an)-.25 F .96(attempt is made to turn of)144 698.4 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 628.8 Q -(xistent function with)-.15 E F12.5 E F0(.)A F1 -(dirs [\255clpv] [+)108 645.6 Q F2(n)A F1 2.5(][)C-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 F1144 705.6 Q F0 -(Clears the directory stack by deleting all of the entries.)180 705.6 Q -F1144 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(2004 Apr 20)149.565 E(6)203.725 E -0 Cg EP +(ariable, or an attempt is made to display a)-.25 F(non-e)144 710.4 Q +(xistent function with)-.15 E F22.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 SF144 84 Q F0 -(Print the directory stack with one entry per line.)180 84 Q F1144 -96 Q F0 .272(Print the directory stack with one entry per line, pre\214\ -xing 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 +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-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 F1144 144 Q F0 +(Clears the directory stack by deleting all of the entries.)180 144 Q F1 +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 F1144 180 Q F0 +(Print the directory stack with one entry per line.)180 180 Q F1 +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 132 Q F1144 144 Q F2(n)A -F0 1.194(Displays the)180 144 R F2(n)3.694 E F0 1.194 +(without options, starting with zero.)180 228 Q F1144 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 156 Q .258(The return v)144 -172.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 184.8 Q F1(diso)108 201.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-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 213.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 225.6 R F12.596 E F0 .096(nor the)2.596 F +F .096(neither the)144 321.6 R F12.596 E F0 .096(nor the)2.596 F F12.596 E F0 .096(option is supplied, the)2.596 F F2(curr)2.596 E .096(ent job)-.37 F F0 .096(is used.)2.596 F .096(If the)5.096 F F1 2.596 E F0 .096(option is gi)2.596 F -.15(ve)-.25 G .096(n, each) -.15 F F2(jobspec)145.74 237.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 249.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 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 261.6 R F1 +H 3.462(rm).15 G .962(ark all)-3.462 F 1.358(jobs; the)144 357.6 R F1 3.858 E F0 1.358(option without a)3.858 F F2(jobspec)5.598 E F0 (ar)4.169 E 1.359(gument restricts operation to running jobs.)-.18 F -1.359(The return)6.359 F -.25(va)144 273.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 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 +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 314.4 R(If)5.307 E F12.807 E F0 .307 +(error occurs.)144 410.4 R(If)5.307 E F12.807 E F0 .307 (is speci\214ed, the trailing ne)2.807 F .308(wline is suppressed.)-.25 F .308(If the)5.308 F F12.808 E F0 .308(option is gi)2.808 F -.15 (ve)-.25 G .308(n, inter).15 F(-)-.2 E 1.349(pretation of the follo)144 -326.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 F13.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 +(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 -350.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 362.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 F13.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 +(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 530.4 Q F2(HH)A F0(the eight-bit character whose v)180 530.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 542.4 Q F2(HHHH)A F0 1.507 -(the Unicode \(ISO/IEC 10646\) character whose v)180 554.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 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 +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 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 F1A F0 2.5(][)C -F1(\255dnps)-2.5 E F0 2.5(][)C F1-2.5 E F2(\214lename)2.5 E F0 2.5 -(][)C F2(name)-2.5 E F0(...])2.5 E .278(Enable and disable b)144 631.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 F1A F0 2.5(][)C F1(\255dnps)-2.5 E F0 2.5(][)C F1-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 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.334(nt).15 G(hough)-3.334 E .99 -(the shell normally searches for b)144 655.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 F13.489 E F0 .989 (is used, each)3.489 F F2(name)3.489 E F0 .989(is dis-)3.489 F 1.581 -(abled; otherwise,)144 667.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 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 F12.58 E F0 .08 -(option means to load the ne)2.58 F(w)-.25 E -.2(bu)144 691.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 F12.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 703.2 Q F1 +(ystems that support dynamic loading.)-4.024 F(The)144 168 Q F1 2.867 E F0 .367(option will delete a b)2.867 F .367(uiltin pre)-.2 F .367(viously loaded with)-.25 F F12.866 E F0 5.366(.I)C 2.866(fn) -5.366 G(o)-2.866 E F2(name)2.866 E F0(ar)2.866 E .366(guments are gi) --.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 715.2 R F1 +-.18 F -.15(ve)-.25 G .366(n, or).15 F .398(if the)144 180 R F1 2.898 E F0 .399(option is supplied, a list of shell b)2.899 F .399 (uiltins is printed.)-.2 F -.4(Wi)5.399 G .399(th no other option ar).4 F .399(guments, the)-.18 F .099(list consists of all enabled shell b)144 -727.2 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 +192 R 2.598(uiltins. If)-.2 F F12.598 E F0 .098 (is supplied, only disabled b)2.598 F .098(uiltins are printed.)-.2 F -(If)5.098 E F12.598 E F0(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 1.916 -(is supplied, the list printed includes all b)144 84 R 1.916 +(If)5.098 E F12.598 E F0 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 96 R/F1 10/Times-Bold@0 SF2.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 +(enabled. If)144 216 R F12.879 E F0 .379 +(is supplied, the output is restricted to the POSIX)2.879 F F2(special) +2.879 E F0 -.2(bu)2.878 G 2.878(iltins. The).2 F .378(return v)2.878 F +(alue)-.25 E .994(is 0 unless a)144 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(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 160.8 R -.15(xe)-.15 G +(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 172.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 189.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 +(exec)108 309.6 Q F0([)2.5 E F1(\255cl)A F0 2.5(][)C F1-2.5 E F2 (name)2.5 E F0 2.5(][)C F2(command)-2.5 E F0([)2.5 E F2(ar)A(guments) --.37 E F0(]])A(If)144 201.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 213.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 F12.676 E F0 .176 (option is supplied, the shell places a dash at the be)2.676 F .177 -(ginning of)-.15 F .5(the zeroth ar)144 225.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 F12.999 E F0 -.499(option causes)2.999 F F2(com-)3.199 E(mand)144 237.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 F13.138 E F0 .638 (is supplied, the shell passes)3.138 F F2(name)3.499 E F0 .639(as the) -3.319 F 1.078(zeroth ar)144 249.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 261.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 3.32(ure. An)144 273.6 R(interacti)3.32 E 1.12 -.15(ve s) +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 285.6 R F1(exec)2.787 E F0 +(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 297.6 Q +.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 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) +(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 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 -2.627 E F0 .127(option is gi)2.627 F -.15(ve)-.25 G .127(n, the) -.15 F F2(names)2.987 E F0 .127(refer to functions.)2.897 F .127(If no) -5.127 F F2(names)2.987 E F0 .127(are gi)2.897 F -.15(ve)-.25 G .126 -(n, or if the).15 F F1144 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 F12.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 +-.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 F12.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 +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 +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 415.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 427.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 F12.531 E F0 .031(is supplied with a)2.531 F F2(name)2.891 E F0 -(that)2.711 E(is not a function.)144 439.2 Q F1(fc)108 456 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 F1A F2(ename)2.5 E F0 2.5(][)C F1(\255lnr)-2.5 E F0 2.5(][)C F2 <8c72>-2.5 E(st)-.1 E F0 2.5(][)C F2(last)-2.5 E F0(])A F1(fc \255s)108 -468 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 480 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 -492 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 504 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 .19(is used as an of) -144 516 R .19(fset from the current command number\).)-.25 F(If)5.19 E +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 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 +(-)-.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 F12.522 E F0 .022 (option suppresses the command numbers when listing.)2.522 F(The)5.022 E F12.522 E F0 .022(option re)2.522 F -.15(ve)-.25 G .022 -(rses the order of).15 F .438(the commands.)144 576 R .438(If the)5.438 +(rses the order of).15 F .438(the commands.)144 696 R .438(If the)5.438 F F12.938 E F0 .438(option is gi)2.938 F -.15(ve)-.25 G .438 (n, the commands are listed on standard output.).15 F(Otherwise,)5.438 E -.335(the editor gi)144 588 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 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.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 .454(specify history lines out of range.)144 720 R -.454(If the)5.454 F F12.954 E F0 .454 -(option is supplied, the return v)2.954 F .455(alue is the v)-.25 F .455 -(alue of the)-.25 F(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 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 .788(last command e)144 84 R -.15(xe)-.15 G -.788(cuted or f).15 F .787 +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 SF2.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 -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 +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 F1(jobspec)145.74 172.8 Q +(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 -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 +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 213.6 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 225.6 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 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) +(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 249.6 R(ariable)-.25 E F1(name)3.296 E F0 +(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 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) +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 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 +(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 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 +(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 297.6 R F2(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 309.6 -Q 2.044(When the end of options is encountered,)144 333.6 R F2(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 345.6 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 F1(name)2.5 E F0 -(is set to ?.)2.5 E F2(getopts)144 369.6 Q F0 2.392 +(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 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 +(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 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 +(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 -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 +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 -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 +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 -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 +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 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 +(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 573.6 Q F2(hash)108 -590.4 Q F0([)2.5 E F2(\255lr)A F0 2.5(][)C F2-2.5 E F1(\214lename) -2.5 E F0 2.5(][)C F2(\255dt)-2.5 E F0 2.5(][)C F1(name)-2.5 E F0(])A -.858(Each time)144 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 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 .243(If the)144 626.4 -R F22.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 F24.211 E F0 1.711 -(option causes the shell to for)4.211 F 1.712 -(get all remembered locations.)-.18 F(The)6.712 E F24.212 E F0 -.833(option causes the shell to for)144 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 F23.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 F23.295 E F0 3.295(,t)C(he)-3.295 E F1(name)3.295 E F0 -.795(is printed before the hashed full pathname.)3.295 F(The)5.795 E F2 -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 -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 F22.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(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(9)203.725 E 0 Cg EP +(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(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 +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-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 120 R +F12.743 E F0 .243 +(option is supplied, no path search is performed, and)2.743 F F2 +(\214lename)4.653 E F0 .242(is used as the full \214lename)2.923 F 1.711 +(of the command.)144 132 R(The)6.711 E F14.211 E F0 1.711 +(option causes the shell to for)4.211 F 1.712 +(get all remembered locations.)-.18 F(The)6.712 E F14.212 E F0 +.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 F13.333 E F0 .833(option is sup-) +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 +168 R F13.295 E F0 3.295(,t)C(he)-3.295 E F2(name)3.295 E F0 .795 +(is printed before the hashed full pathname.)3.295 F(The)5.795 E F1 +3.295 E F0 .795(option causes)3.295 F .934 +(output to be displayed in a format that may be reused as input.)144 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 F12.822 E F0 .322 +(is supplied, information about remembered commands is printed.)2.822 F +.321(The return status is true)5.321 F(unless a)144 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 +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 +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 120 Q F1 -144 132 Q F0(Display a short description of each)180 132 Q F2 -(pattern)2.5 E F1144 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 F1144 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 F0A 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) +(uiltins and shell control struc-)-.2 F(tures is printed.)144 256.8 Q F1 +144 268.8 Q F0(Display a short description of each)180 268.8 Q F2 +(pattern)2.5 E F1144 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 F1144 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 F0A 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 -273.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 285.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 297.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 309.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 321.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 333.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 F1144 345.6 Q F0 -(Clear the history list by deleting all the entries.)180 345.6 Q F1 -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) +(wing meanings:)-.25 E F1144 482.4 Q F0 +(Clear the history list by deleting all the entries.)180 482.4 Q F1 +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 -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) +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 -144 405.6 Q F2(start)2.5 E F0A F2(end)A F0 .758 -(Delete the history entries between positions)180 417.6 R F2(start)3.258 +144 542.4 Q F2(start)2.5 E F0A 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 429.6 Q .3 -.15(ve v)-.25 H +.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 -144 441.6 Q F0 .564(Append the `)180 441.6 R(`ne)-.74 E(w')-.25 E 3.064 +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 453.6 Q +(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 F1144 465.6 +(ut not already appended to the history \214le.)-.2 E F1144 602.4 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 +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 489.6 Q F1144 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 -144 513.6 Q F0 -(Write the current history list to the history \214le, o)180 513.6 Q +(sion.)180 626.4 Q F1144 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 +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 F1144 525.6 Q F0 .626 -(Perform history substitution on the follo)180 525.6 R(wing)-.25 E F2 +(ontents.)-2.5 E F1144 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 537.6 R .475 +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 549.6 Q(xpansion.)-.15 E F1144 561.6 Q F0 -.363(Store the)180 561.6 R F2(ar)3.193 E(gs)-.37 E F0 .363 +(normal history e)180 686.4 Q(xpansion.)-.15 E F1144 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 573.6 Q -.15 +(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 .145(If the)144 590.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 .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 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 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 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 650.4 Q(fset) --.18 E F0 1.032(is supplied as an ar)3.532 F 1.031(gument to)-.18 F F1 -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 -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 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 F1144 715.2 Q F0 -(List process IDs in addition to the normal information.)180 715.2 Q -(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 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 SF144 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 F1144 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 F1144 120 Q F0 -(Display only running jobs.)180 120 Q F1144 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 F12.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 F1A F2(sigspec)2.5 E F0(|) -2.5 E F12.5 E F2(signum)2.5 E F0(|)2.5 E F12.5 E F2(sigspec)A -F0 2.5(][)C F2(pid)-2.5 E F0(|)2.5 E F2(jobspec)2.5 E F0 2.5(].)C(..) --2.5 E F1(kill \255l)108 218.4 Q F0(|)A F1A F0([)2.5 E F2(sigspec) -A F0(|)2.5 E F2 -.2(ex)2.5 G(it_status).2 E F0(])A .12 -(Send the signal named by)144 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 +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 SF3.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 F23.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 F2144 196.8 Q F0 +(List process IDs in addition to the normal information.)180 196.8 Q F2 +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 +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 F2144 244.8 Q F0 +(Display only running jobs.)180 244.8 Q F2144 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 +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 F2A F1(sigspec)2.5 E F0(|)2.5 E F2 +2.5 E F1(signum)2.5 E F0(|)2.5 E F22.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 F2A 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 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) +(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.348(is assumed.)3.599 F(An)6.348 E(ar)144 266.4 Q .522(gument of)-.18 -F F13.023 E F0 .523(lists the signal names.)3.023 F .523(If an) +1.348(is assumed.)3.599 F(An)6.348 E(ar)144 391.2 Q .522(gument of)-.18 +F F23.023 E F0 .523(lists the signal names.)3.023 F .523(If an) 5.523 F 3.023(ya)-.15 G -.18(rg)-3.023 G .523(uments are supplied when) -.18 F F13.023 E F0 .523(is gi)3.023 F -.15(ve)-.25 G .523 -(n, the names).15 F .28(of the signals corresponding to the ar)144 278.4 +.18 F F23.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 -F2 -.2(ex)2.78 G(it_status).2 E F0(ar)144 290.4 Q .377(gument to)-.18 F -F12.877 E F0 .378 +F1 -.2(ex)2.78 G(it_status).2 E F0(ar)144 415.2 Q .377(gument to)-.18 F +F22.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 302.4 -R(The)5.962 E F13.462 E F0 .962(option is equi)3.462 F -.25(va) --.25 G .962(lent to).25 F F13.462 E F0(.)A F1(kill)5.962 E F0 .962 +(xit status of a process termi-)-.15 F .963(nated by a signal.)144 427.2 +R(The)5.962 E F23.462 E F0 .962(option is equi)3.462 F -.25(va) +-.25 G .962(lent to).25 F F23.462 E F0(.)A F2(kill)5.962 E F0 .962 (returns true if at least one signal w)3.462 F(as)-.1 E -(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 +(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 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 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 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 +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 -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 +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.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 432 R F1(set)4.063 E -F0 -.2(bu)4.063 G 1.563 +(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 444 R 1.243 -(ith no operands,)-.4 F F1(local)3.743 E F0 1.243 +(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 456 R F1(local)2.92 E F0 .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 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 F1A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count) -2.5 E F0 2.5(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1 --2.5 E F2(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1 --2.5 E F2(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E -F0 2.5(][)C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E -(ay)-.15 E F0(])A F1 -.18(re)108 513.6 S(adarray).18 E F0([)2.5 E F1 -A F2(delim)2.5 E F0 2.5(][)C F1-2.5 E F2(count)2.5 E F0 2.5 -(][)C F1-2.5 E F2(origin)2.5 E F0 2.5(][)C F1-2.5 E F2 -(count)2.5 E F0 2.5(][)C F1-2.5 E F0 2.5(][)C F1-2.5 E F2 -(fd)2.5 E F0 2.5(][)C F1-2.5 E F2(callbac)2.5 E(k)-.2 E F0 2.5(][) -C F1-2.5 E F2(quantum)2.5 E F0 2.5(][)C F2(arr)-2.5 E(ay)-.15 E F0 -(])A .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 +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 F2A F1(delim)2.5 E F0 2.5(][)C F2-2.5 E F1(count) +2.5 E F0 2.5(][)C F2-2.5 E F1(origin)2.5 E F0 2.5(][)C F2 +-2.5 E F1(count)2.5 E F0 2.5(][)C F2-2.5 E F0 2.5(][)C F2 +-2.5 E F1(fd)2.5 E F0 2.5(][)C F2-2.5 E F1(callbac)2.5 E(k)-.2 E +F0 2.5(][)C F2-2.5 E F1(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E +(ay)-.15 E F0(])A F2 -.18(re)108 638.4 S(adarray).18 E F0([)2.5 E F2 +A F1(delim)2.5 E F0 2.5(][)C F2-2.5 E F1(count)2.5 E F0 2.5 +(][)C F2-2.5 E F1(origin)2.5 E F0 2.5(][)C F2-2.5 E F1 +(count)2.5 E F0 2.5(][)C F2-2.5 E F0 2.5(][)C F2-2.5 E F1 +(fd)2.5 E F0 2.5(][)C F2-2.5 E F1(callbac)2.5 E(k)-.2 E F0 2.5(][) +C F2-2.5 E F1(quantum)2.5 E F0 2.5(][)C F1(arr)-2.5 E(ay)-.15 E F0 +(])A .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 F2(fd)4.65 E F0 1.249(if the)144 537.6 R -F13.749 E F0 1.249(option is supplied.)3.749 F 1.249(The v)6.249 F +(rom \214le descriptor)-2.68 F F1(fd)4.65 E F0 1.249(if the)144 662.4 R +F23.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 F1144 561.6 Q F0 .91 -(The \214rst character of)180 561.6 R F2(delim)3.41 E F0 .911 +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 F2144 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 F2(delim)180 573.6 Q F0(is the empty string,)2.5 E F1 +(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 F1144 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 F1144 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 F1144 609.6 Q F0 -(Discard the \214rst)180 609.6 Q F2(count)2.5 E F0(lines read.)2.5 E F1 -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 F1144 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 F1144 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 F12.5 E F0 -(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 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 F12.968 E F0 -.467(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 +2.5 E(.)-.55 E F2144 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 SF144 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 F1144 96 +Q F0(Discard the \214rst)180 96 Q F2(count)2.5 E F0(lines read.)2.5 E F1 +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 F1144 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 F1144 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 F12.5 E F0 +(option speci\214es)2.5 E F2(quantum)2.5 E F0(.).32 E F1144 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 F12.968 E F0 .467 +(is speci\214ed without)2.967 F F12.967 E F0 2.967(,t)C .467 (he def)-2.967 F .467(ault quantum is 5000.)-.1 F(When)5.467 E F2 (callbac)2.967 E(k)-.2 E F0 .467(is e)2.967 F -.25(va)-.25 G .467 -(luated, it is sup-).25 F .261(plied the inde)144 686.4 R 2.761(xo)-.15 +(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 698.4 R(guments.)-.18 E F2(callbac)5.275 E(k)-.2 E +(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 710.4 Q -(If not supplied with an e)144 727.2 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(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(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 +(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 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 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-2.5 E F2(n)A F0(])A(Remo)144 124.8 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-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 -136.8 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 148.8 Q F1144 160.8 Q F0 .551 -(Suppresses the normal change of directory when remo)180 160.8 R .551 +F(wing)-.25 E(meanings:)144 295.2 Q F1144 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 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 +(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 -196.8 S 2.5(re).15 G(xample:)-2.65 E/F3 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 F3(popd +1)2.5 E F0(the second.)2.5 E F1144 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 +-.65 E F3(popd +1)2.5 E F0(the second.)2.5 E F1144 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 220.8 R(or e)-.15 E(xample:)-.15 E F3(popd -0)2.5 E F0 +(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 -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 +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 261.6 Q -(ails.)-.1 E F1(printf)108 278.4 Q F0([)2.5 E F1A 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 F1A F2(var)2.5 E F0 (])A F2(format)2.5 E F0([)2.5 E F2(ar)A(guments)-.37 E F0(])A 1.436 -(Write the formatted)144 290.4 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 F13.937 E F0 .126 -(option causes the output to be assigned to the v)144 302.4 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 314.4 Q(The)144 338.4 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 350.4 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 362.4 R .037 -(xt successi)-.15 F -.15(ve)-.25 G F2(ar)144 374.4 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 386.4 Q -(xtensions:)-.15 E F1(%b)144 398.4 Q F0(causes)180 398.4 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 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 +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 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 +(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 470.4 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 .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 +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 494.4 R +(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 506.4 R -.15 +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 518.4 Q(vior)-.2 E(.)-.55 E(Ar)144 535.2 Q +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 547.2 R 1.259 +(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 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 .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 616.8 Q F0([)2.5 E F1A F0 2.5(][)C(+)-2.5 E F2(n)A F0 2.5(][)C --2.5 E F2(n)A F0(])A F1(pushd)108 628.8 Q F0([)2.5 E F1A 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.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 676.8 Q -F1144 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 -(2004 Apr 20)149.565 E(12)198.725 E 0 Cg EP +-.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(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-Bold@0 SF144 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 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 +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 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 F2A F0 2.5(][)C(+) +-2.5 E F1(n)A F0 2.5(][)C-2.5 E F1(n)A F0(])A F2(pushd)108 124.8 Q +F0([)2.5 E F2A 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 F2144 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 F2144 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 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 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 +(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 148.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 160.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 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 +-.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 -213.6 R F12.681 E F0 .181(option is supplied or the)2.681 F F1 -.181(\255o ph)2.681 F(ysical)-.15 E F0 .181(option to the)2.681 F F1 +362.4 R F22.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 225.6 R(the)3.264 E F13.264 E F0 .763 +(enabled. If)144 374.4 R(the)3.264 E F23.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-3.817 E F2 -(aname)3.817 E F0 3.817(][)C F1-3.817 E F2(delim)3.817 E F0 3.817 -(][)C F1-3.817 E F2(te)3.817 E(xt)-.2 E F0 3.817(][)C F1 --3.817 E F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1-3.816 E -F2(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F1-3.816 E F2(pr) -3.816 E(ompt)-.45 E F0 3.816(][)C F1-3.816 E F2(timeout)3.816 E F0 -3.816(][)C F1-3.816 E F2(fd)3.816 E F0(])A([)108 278.4 Q F2(name)A + 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-3.817 E F1 +(aname)3.817 E F0 3.817(][)C F2-3.817 E F1(delim)3.817 E F0 3.817 +(][)C F2-3.817 E F1(te)3.817 E(xt)-.2 E F0 3.817(][)C F2 +-3.817 E F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2-3.816 E +F1(nc)3.816 E(har)-.15 E(s)-.1 E F0 3.816(][)C F2-3.816 E F1(pr) +3.816 E(ompt)-.45 E F0 3.816(][)C F2-3.816 E F1(timeout)3.816 E F0 +3.816(][)C F2-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 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 F13.848 E F0 1.348 +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 F23.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 +-.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 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 +(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 326.4 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 338.4 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 350.4 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 362.4 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 374.4 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 -386.4 R(if supplied, ha)2.5 E .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 398.4 Q F2(aname)2.5 E F0 1.049 -(The w)180 410.4 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 F2144 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 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 F1144 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 +-.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 F2144 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 F2(delim)180 458.4 Q F0(is the empty string,)2.5 E F1 +(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 F1 -144 470.4 Q F0 .372 -(If the standard input is coming from a terminal,)180 470.4 R F1 -.18 +(will terminate a line when it reads a NUL character)2.5 E(.)-.55 E F2 +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 482.4 R .218 +.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 494.4 Q -.15(ve)-.25 G 2.5(\)e).15 G(diting settings, b)-2.5 E +(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 F1144 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 +(ault \214lename completion.)-.1 E F2144 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 518.4 Q(gins.)-.15 E F1144 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 +-.25 F(ing be)180 667.2 Q(gins.)-.15 E F2144 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 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 F1144 -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 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 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 F1180 638.4 Q F0 -(option belo)2.5 E(w\).)-.25 E F1144 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 -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(the line.)180 698.4 Q -(In particular)5 E 2.5(,ab)-.4 G(ackslash-ne)-2.5 E -(wline pair may not be used as a line continuation.)-.25 E F1144 -710.4 Q F0(Silent mode.)180 710.4 Q -(If input is coming from a terminal, characters are not echoed.)5 E -(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(13)198.725 E 0 Cg EP +-.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 SF144 84 Q/F2 10 -/Times-Italic@0 SF(timeout)2.5 E F0(Cause)180 96 Q F1 -.18(re)2.929 G +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 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 .67 +(xception of backslash; see the)-.15 F F1180 156 Q F0(option belo) +2.5 E(w\).)-.25 E F1144 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 +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(the line.)180 216 Q(In particular)5 E 2.5(,ab)-.4 G +(ackslash-ne)-2.5 E(wline pair may not be used as a line continuation.) +-.25 E F1144 228 Q F0(Silent mode.)180 228 Q +(If input is coming from a terminal, characters are not echoed.)5 E F1 +144 240 Q F2(timeout)2.5 E F0(Cause)180 252 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 108 R F2(timeout)3.061 E F0 +(ber of characters\) is not read within)180 264 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 120 Q +3.061 F(with a fractional portion follo)180 276 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 -132 R .506(fect when reading)-.25 F .59(from re)180 144 R .59 +288 R .506(fect when reading)-.25 F .59(from re)180 300 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 156 S(riable) +(artial input read into the speci\214ed).15 F -.25(va)180 312 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 168 R 1.12(xit status is 0 if input is a) +(ata.)-2.77 E 1.12(The e)180 324 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 -180 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) -.15 E(xceeded.)-.15 E F1144 192 Q F2(fd)2.5 E F0 -(Read input from \214le descriptor)180 192 Q F2(fd)2.5 E F0(.)A .476 -(If no)144 208.8 R F2(names)3.336 E F0 .476 +336 R -.15(ex)2.5 G(it status is greater than 128 if the timeout is e) +.15 E(xceeded.)-.15 E F1144 348 Q F2(fd)2.5 E F0 +(Read input from \214le descriptor)180 348 Q F2(fd)2.5 E F0(.)A .476 +(If no)144 364.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 9/Times-Bold@0 SF(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 220.8 R F1 -.18(re)3.273 G(ad) +(unless end-of-\214le is encountered,)144 376.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 232.8 S 2.004 +-.25(va)144 388.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 244.8 Q(gument to)-.18 E F1 -2.5 E F0(.)A F1 -.18(re)108 261.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A +(descriptor is supplied as the ar)144 400.8 Q(gument to)-.18 E F1 +2.5 E F0(.)A F1 -.18(re)108 417.6 S(adonly).18 E F0([)2.5 E F1(\255aAf)A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(name)-2.5 E F0([=)A F2(wor)A -(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 273.6 R -.15(ve)-.25 G +(d)-.37 E F0 2.5(].)C(..])-2.5 E .77(The gi)144 429.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 285.6 R +(may not be changed by subse-)3.54 F 1.096(quent assignment.)144 441.6 R 1.096(If the)6.096 F F13.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 297.6 Q 3.334(ed. The) +(names)3.597 E F0 1.097(are so)3.597 F(mark)144 453.6 Q 3.334(ed. The) -.1 F F13.334 E F0 .834(option restricts the v)3.334 F .834 (ariables to inde)-.25 F -.15(xe)-.15 G 3.334(da).15 G .834(rrays; the) -3.334 F F13.334 E F0 .834(option restricts the v)3.334 F(ari-) --.25 E .776(ables to associati)144 309.6 R 1.076 -.15(ve a)-.25 H 3.276 +-.25 E .776(ables to associati)144 465.6 R 1.076 -.15(ve a)-.25 H 3.276 (rrays. If).15 F .777(both options are supplied,)3.276 F F13.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 321.6 R -.15(ve) +3.637 E F0(ar)3.457 E(gu-)-.18 E .522(ments are gi)144 477.6 R -.15(ve) -.25 G .521(n, or if the).15 F F13.021 E F0 .521 (option is supplied, a list of all readonly names is printed.)3.021 F .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 333.6 R(The)5.296 E F1 +to a subset of the set of readonly names.)144 489.6 R(The)5.296 E F1 2.796 E F0(option)2.796 E .786 (causes output to be displayed in a format that may be reused as input.) -144 345.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 -357.6 Q .717(wed by =)-.25 F F2(wor)A(d)-.37 E F0 3.218(,t)C .718(he v) +144 501.6 R .786(If a v)5.786 F .785(ariable name is fol-)-.25 F(lo)144 +513.6 Q .717(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 369.6 R F2(names)3.12 E F0 .26(is not a v)3.03 F .26(alid shell v) +144 525.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 F12.76 E F0 .26 -(is supplied with a)2.76 F F2(name)144.36 381.6 Q F0 -(that is not a function.)2.68 E F1 -.18(re)108 398.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 410.4 R +(is supplied with a)2.76 F F2(name)144.36 537.6 Q F0 +(that is not a function.)2.68 E F1 -.18(re)108 554.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 566.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 422.4 R -.15(xe) +(the return status is that of the last command e)144 578.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 434.4 R 3.738(,t)-.4 G 1.238 +G(cuted).15 E 1.238(by a trap handler)144 590.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.033(before the trap handler)144 -446.4 R 6.033(.I)-.55 G(f)-6.033 E F1 -.18(re)3.533 G(tur).18 E(n)-.15 E +602.4 R 6.033(.I)-.55 G(f)-6.033 E F1 -.18(re)3.533 G(tur).18 E(n)-.15 E F0 1.033(is e)3.533 F -.15(xe)-.15 G 1.033(cuted during a).15 F F1(DEB) 3.532 E(UG)-.1 E F0 1.032(trap, the last command used to)3.532 F .389 -(determine the status is the last command e)144 458.4 R -.15(xe)-.15 G +(determine the status is the last command e)144 614.4 R -.15(xe)-.15 G .389(cuted by the trap handler before).15 F F1 -.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 470.4 Q F1 -.18(re)2.584 G(tur).18 E(n)-.15 E F0 .084 +G(d.).1 E(If)144 626.4 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 482.4 R -.15(xe)-.15 G .588 +(causes the shell to stop e)144 638.4 R -.15(xe)-.15 G .588 (cuting that script and return either).15 F F2(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 494.4 R -.15(xe)-.15 G .326(cuted within the script as the e).15 F +144 650.4 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 506.4 R .444 +(its least signi\214cant 8 bits.)144 662.4 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 518.4 R -.15 +(ment, or is used outside a function and not during e)144 674.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.38(.A)C .68 -.15(ny c)-5.38 H(om-).15 E -.749(mand associated with the)144 530.4 R F1(RETURN)3.249 E F0 .749 +.749(mand associated with the)144 686.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 542.4 Q F1 -(set)108 559.2 Q F0([)2.5 E F1(\255\255abefhkmnptuvxBCEHPT)A F0 2.5(][)C -F1-2.5 E F2(option\255name)2.5 E F0 2.5(][)C F2(ar)-2.5 E(g)-.37 E -F0(...])2.5 E F1(set)108 571.2 Q F0([)2.5 E F1(+abefhkmnptuvxBCEHPT)A F0 +G .75(cution resumes after the function).15 F(or script.)144 698.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-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 583.2 S .836 +(g)-.37 E F0(...])2.5 E -.4(Wi)144 108 S .836 (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 595.2 -R 3.284(ariables. Read-only)-.25 F -.25(va)3.284 G .784 -(riables cannot be).25 F 2.912(reset. In)144 607.2 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 619.2 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 631.2 R 1.623 +(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 .784(riables cannot be) +.25 F 2.947(reset. In)144 132 R F2 .447(posix mode)2.947 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.53 +(locale. When)144 144 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 156 R 1.623 (alues for the positional parameters and are assigned, in)-.25 F(order) -144 643.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 F1144 655.2 Q -F0 1.377(Each v)184 655.2 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 F1144 180 Q F0 +1.377(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.378(xport attrib)-.15 F -1.378(ute and)-.2 F(mark)184 667.2 Q(ed for e)-.1 E(xport to the en)-.15 -E(vironment of subsequent commands.)-.4 E F1144 679.2 Q F0 .132 -(Report the status of terminated background jobs immediately)184 679.2 R +1.378(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 F1144 204 Q F0 .132 +(Report the status of terminated background jobs immediately)184 204 R 2.632(,r)-.65 G .131(ather than before the ne)-2.632 F(xt)-.15 E -(primary prompt.)184 691.2 Q(This is ef)5 E(fecti)-.25 E .3 -.15(ve o) --.25 H(nly when job control is enabled.).15 E F1144 703.2 Q F0 -.087(Exit immediately if a)184 703.2 R F2(pipeline)2.587 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 F1144 228 Q F0 .087 +(Exit immediately if a)184 228 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 715.2 Q -F2 1.521(compound command)4.021 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 .079(The shell does not e)184 -727.2 R .079(xit if the command that f)-.15 F .08 -(ails is part of the command list immediately)-.1 F(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(follo)184 84 Q 1.655(wing a)-.25 F/F1 10 -/Times-Bold@0 SF(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 +F0 .088(\), a)B F2(list)2.588 E F0 2.588(,o)C(r)-2.588 E(a)184 240 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 252 R .079(xit if the command that f)-.15 F +.08(ails is part of the command list immediately)-.1 F(follo)184 264 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 96 S .581(rds, part of an).1 F 3.081(yc) +4.154 E(ed)-.15 E -.1(wo)184 276 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 108 R +(xcept the command follo)-.15 F(wing)-.25 E .918(the \214nal)184 288 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 120 S .66(lue is being in).25 F -.15(ve)-.4 G .66(rted with) +-.25(va)184 300 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 132 R 1.112(ailed while)-.1 F +(non-zero status because a command f)184 312 R 1.112(ailed while)-.1 F F13.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 144 R 2.677 +(eing ignored, the shell does)-3.612 F .177(not e)184 324 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 156 R .617 +(option applies to)2.678 F .618(the shell en)184 336 R .617 (vironment and each subshell en)-.4 F .617(vironment separately \(see) --.4 F/F2 9/Times-Bold@0 SF .617(COMMAND EXE-)3.117 F .642(CUTION ENVIR) -184 168 R(ONMENT)-.27 E F0(abo)2.893 E -.15(ve)-.15 G .643 +-.4 F F3 .617(COMMAND EXE-)3.117 F .642(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 .643(cuting all).15 F(the commands in the subshell.)184 180 Q -2.042(If a compound command or shell function e)184 198 R -.15(xe)-.15 G +(xe)-.15 G .643(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 F14.542 E F0 -2.042(is being)4.542 F 1.435(ignored, none of the commands e)184 210 R +2.042(is being)4.542 F 1.435(ignored, none of the commands e)184 390 R -.15(xe)-.15 G 1.436(cuted within the compound command or function).15 F -.194(body will be af)184 222 R .194(fected by the)-.25 F F12.694 E +.194(body will be af)184 402 R .194(fected by the)-.25 F F12.694 E F0 .193(setting, e)2.693 F -.15(ve)-.25 G 2.693(ni).15 G(f)-2.693 E F1 2.693 E F0 .193(is set and a command returns a f)2.693 F(ailure) --.1 E 3.39(status. If)184 234 R 3.39(ac)3.39 G .89 +-.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 F13.39 E F0 .89 (while e)3.39 F -.15(xe)-.15 G .89(cuting in a conte).15 F(xt)-.15 E -(where)184 246 Q F13.154 E F0 .654 +(where)184 426 Q F13.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 258 Q F1 -144 270 Q F0(Disable pathname e)184 270 Q(xpansion.)-.15 E F1 -144 282 Q F0 2.238(Remember the location of commands as the)184 -282 R 4.738(ya)-.15 G 2.239(re look)-4.738 F 2.239(ed up for e)-.1 F +(or the command containing the function call completes.)184 438 Q F1 +144 450 Q F0(Disable pathname e)184 450 Q(xpansion.)-.15 E F1 +144 462 Q F0 2.238(Remember the location of commands as the)184 +462 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 -294 Q(ault.)-.1 E F1144 306 Q F0 .514(All ar)184 306 R .514 +474 Q(ault.)-.1 E F1144 486 Q F0 .514(All ar)184 486 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 318 Q F1 -144 330 Q F0 .148(Monitor mode.)184 330 R .148 +(command, not just those that precede the command name.)184 498 Q F1 +144 510 Q F0 .148(Monitor mode.)184 510 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 342 R F2 .651(JOB CONTR)3.151 F +(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 .65 -(processes run in a separate)3.151 F .678(process group.)184 354 R .679 +(processes run in a separate)3.151 F .678(process group.)184 534 R .679 (When a background job completes, the shell prints a line containing it\ -s)5.678 F -.15(ex)184 366 S(it status.).15 E F1144 378 Q F0 .653 -(Read commands b)184 378 R .653(ut do not e)-.2 F -.15(xe)-.15 G .653 +s)5.678 F -.15(ex)184 546 S(it status.).15 E F1144 558 Q F0 .653 +(Read commands b)184 558 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 390 Q(This is ignored by interacti)5 E .3 --.15(ve s)-.25 H(hells.).15 E F1144 402 Q/F3 10/Times-Italic@0 SF -(option\255name)2.5 E F0(The)184 414 Q F3(option\255name)2.5 E F0 -(can be one of the follo)2.5 E(wing:)-.25 E F1(allexport)184 426 Q F0 -(Same as)224 438 Q F12.5 E F0(.)A F1(braceexpand)184 450 Q F0 -(Same as)224 462 Q F12.5 E F0(.)A F1(emacs)184 474 Q F0 .089 -(Use an emacs-style command line editing interf)224 474 R 2.589 +5.653 F(syntax errors.)184 570 Q(This is ignored by interacti)5 E .3 +-.15(ve s)-.25 H(hells.).15 E F1144 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 F12.5 E +F0(.)A F1(braceexpand)184 630 Q F0(Same as)224 642 Q F12.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 486 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 498 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 510 Q(exit)-.18 E F0(Same as)224 510 Q F12.5 E F0(.)A F1 -(errtrace)184 522 Q F0(Same as)224 522 Q F12.5 E F0(.)A F1 -(functrace)184 534 Q F0(Same as)224 546 Q F12.5 E F0(.)A F1 -(hashall)184 558 Q F0(Same as)224 558 Q F12.5 E F0(.)A F1 -(histexpand)184 570 Q F0(Same as)224 582 Q F12.5 E F0(.)A F1 -(history)184 594 Q F0 .586(Enable command history)224 594 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 606 Q -(ault in interacti)-.1 E .3 -.15(ve s)-.25 H(hells.).15 E F1(ignor)184 -618 Q(eeof)-.18 E F0 1.657(The ef)224 630 R 1.657 -(fect is as if the shell command)-.25 F/F5 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 -642 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 654 S(yw).1 E(ord)-.1 E F0(Same as)224 666 Q F1 -2.5 E F0(.)A F1(monitor)184 678 Q F0(Same as)224 678 Q F12.5 -E F0(.)A F1(noclob)184 690 Q(ber)-.1 E F0(Same as)224 702 Q F12.5 -E F0(.)A F1(noexec)184 714 Q F0(Same as)224 714 Q F12.5 E F0(.)A +184 690 Q(exit)-.18 E F0(Same as)224 690 Q F12.5 E F0(.)A F1 +(errtrace)184 702 Q F0(Same as)224 702 Q F12.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 @@ -2101,552 +2103,542 @@ 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(noglob)184 84 Q F0 -(Same as)224 84 Q F12.5 E F0(.)A F1(nolog)184 96 Q F0 -(Currently ignored.)224 96 Q F1(notify)184 108 Q F0(Same as)224 108 Q F1 -2.5 E F0(.)A F1(nounset)184 120 Q F0(Same as)224 120 Q F12.5 -E F0(.)A F1(onecmd)184 132 Q F0(Same as)224 132 Q F12.5 E F0(.)A -F1(ph)184 144 Q(ysical)-.15 E F0(Same as)224 144 Q F12.5 E F0(.)A -F1(pipefail)184 156 Q F0 1.029(If set, the return v)224 156 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 168 R -1.136 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(functrace)184 84 Q F0 +(Same as)224 96 Q F12.5 E F0(.)A F1(hashall)184 108 Q F0(Same as) +224 108 Q F12.5 E F0(.)A F1(histexpand)184 120 Q F0(Same as)224 +132 Q F12.5 E F0(.)A F1(history)184 144 Q F0 .586 +(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.657(The ef)224 180 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 +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 +2.5 E F0(.)A F1(monitor)184 228 Q F0(Same as)224 228 Q F12.5 +E F0(.)A F1(noclob)184 240 Q(ber)-.1 E F0(Same as)224 252 Q F12.5 +E F0(.)A F1(noexec)184 264 Q F0(Same as)224 264 Q F12.5 E F0(.)A +F1(noglob)184 276 Q F0(Same as)224 276 Q F12.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 F12.5 E F0(.)A F1(nounset)184 312 Q F0(Same as) +224 312 Q F12.5 E F0(.)A F1(onecmd)184 324 Q F0(Same as)224 324 Q +F12.5 E F0(.)A F1(ph)184 336 Q(ysical)-.15 E F0(Same as)224 336 Q +F12.5 E F0(.)A F1(pipefail)184 348 Q F0 1.029 +(If set, the return v)224 348 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 360 +R 1.136 (xit with a non-zero status, or zero if all commands in the pipeline) --.15 F -.15(ex)224 180 S(it successfully).15 E 5(.T)-.65 G -(his option is disabled by def)-5 E(ault.)-.1 E F1(posix)184 192 Q F0 -2.09(Change the beha)224 192 R 2.091(vior of)-.2 F F1(bash)4.591 E F0 +-.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.09(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 -204 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.462 E(w)-.25 E 2.306 -(for a reference to a document that details ho)224 216 R 4.807(wp)-.25 G +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.462 E(w)-.25 E 2.306 +(for a reference to a document that details ho)224 408 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 -228 Q(vior)-.2 E(.)-.55 E F1(pri)184 240 Q(vileged)-.1 E F0(Same as)224 -252 Q F12.5 E F0(.)A F1 -.1(ve)184 264 S(rbose).1 E F0(Same as)224 -264 Q F12.5 E F0(.)A F1(vi)184 276 Q F0 1.466 -(Use a vi-style command line editing interf)224 276 R 3.965(ace. This) +420 Q(vior)-.2 E(.)-.55 E F1(pri)184 432 Q(vileged)-.1 E F0(Same as)224 +444 Q F12.5 E F0(.)A F1 -.1(ve)184 456 S(rbose).1 E F0(Same as)224 +456 Q F12.5 E F0(.)A F1(vi)184 468 Q F0 1.466 +(Use a vi-style command line editing interf)224 468 R 3.965(ace. This) -.1 F 1.465(also af)3.965 F 1.465(fects the editing)-.25 F(interf)224 -288 Q(ace used for)-.1 E F1 -.18(re)2.5 G(ad \255e).18 E F0(.)A F1 -(xtrace)184 300 Q F0(Same as)224 300 Q F12.5 E F0(.)A(If)184 318 Q -F13.052 E F0 .552(is supplied with no)3.052 F F2(option\255name) +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 F12.5 E F0(.)A(If)184 510 Q +F13.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 -330 Q F0 1.072(is supplied with no)3.572 F F2(option\255name)3.572 E F0 +522 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 342 Q F1 -144 354 Q F0 -.45(Tu)184 354 S 1.071(rn on).45 F F2(privile)4.821 E -.1 +(option settings is displayed on the standard output.)184 534 Q F1 +144 546 Q F0 -.45(Tu)184 546 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 -F3($ENV)3.572 E F0(and)3.322 E F3($B)3.572 E(ASH_ENV)-.27 E F0 1.072 +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 366 R 1.5 -(vironment, and the)-.4 F F3(SHELLOPTS)4 E/F4 9/Times-Roman@0 SF(,)A F3 --.27(BA)184 378 S(SHOPTS).27 E F4(,)A F3(CDP)2.774 E -.855(AT)-.666 G(H) -.855 E F4(,)A F0(and)2.774 E F3(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 390 R .38 +(cessed, shell functions are not inherited from the en)184 558 R 1.5 +(vironment, and the)-.4 F F2(SHELLOPTS)4 E F3(,)A F2 -.27(BA)184 570 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 582 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 402 R F12.961 E F0 .461 +(user \(group\) id, and the)184 594 R F12.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 414 Q .695 -.15(ve u)-.25 H .395 +(en and the ef)-.1 F(fec-)-.25 E(ti)184 606 Q .695 -.15(ve u)-.25 H .395 (ser id is set to the real user id.).15 F .395(If the)5.395 F F1 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 426 R -.45(Tu)5.386 G +E -.15(ve)-.25 G .386(user id is not reset.)184 618 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 438 Q F1144 450 Q F0 -(Exit after reading and e)184 450 Q -.15(xe)-.15 G(cuting one command.) -.15 E F1144 462 Q F0 -.35(Tr)184 462 S .044(eat unset v).35 F .044 +(set to the real user and group ids.)184 630 Q F1144 642 Q F0 +(Exit after reading and e)184 642 Q -.15(xe)-.15 G(cuting one command.) +.15 E F1144 654 Q F0 -.35(Tr)184 654 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 474 R 2.682 +as an)-.25 F .182(error when performing parameter e)184 666 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 486 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 -498 Q F1144 510 Q F0(Print shell input lines as the)184 510 Q 2.5 -(ya)-.15 G(re read.)-2.5 E F1144 522 Q F0 .315(After e)184 522 R -.315(xpanding each)-.15 F F2 .315(simple command)2.815 F F0(,)A F1 -.25 +690 Q F1144 702 Q F0(Print shell input lines as the)184 702 Q 2.5 +(ya)-.15 G(re read.)-2.5 E F1144 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.236(or arithmetic)184 -534 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 546 Q -(xpanded ar)-.15 E(guments or associated w)-.18 E(ord list.)-.1 E F1 -144 558 Q F0 2.578(The shell performs brace e)184 558 R 2.578 +2.815 E F1(select)2.815 E F0(command,)2.815 E 3.26(or arithmetic)184 726 +R F1 -.25(fo)5.76 G(r).25 E F0 3.26(command, display the e)5.76 F 3.26 +(xpanded v)-.15 F 3.26(alue of)-.25 F F2(PS4)5.76 E F3(,)A F0(follo) +5.509 E 3.259(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 +144 96 Q F0 2.578(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.079(\). This).15 F 2.579(is on by)5.079 F(def)184 570 Q -(ault.)-.1 E F1144 582 Q F0 .214(If set,)184 582 R F1(bash)2.714 E +-.15(ve)-.15 G 5.079(\). This).15 F 2.579(is on by)5.079 F(def)184 108 Q +(ault.)-.1 E F1144 120 Q F0 .214(If set,)184 120 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 (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 594 R .553(may be o)3.053 F -.15(ve)-.15 G .553 +3.053(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 606 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 -144 618 Q F0 .104(If set, an)184 618 R 2.604(yt)-.15 G .104 +.15 F(tor)184 144 Q F1(>|)2.5 E F0(instead of)2.5 E F1(>)2.5 E F0(.)A F1 +144 156 Q F0 .104(If set, an)184 156 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 630 R -.15(xe)-.15 G .838(cuted in a subshell en).15 +F .838(mands e)184 168 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 642 Q F1 -144 654 Q F0(Enable)184 654 Q F1(!)3.032 E F0 .532 +(trap is normally not inherited in)3.339 F(such cases.)184 180 Q F1 +144 192 Q F0(Enable)184 192 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 666 Q -.15 -(ve)-.25 G(.).15 E F1144 678 Q F0 .959 -(If set, the shell does not resolv)184 678 R 3.459(es)-.15 G .959 +F .531(ault when the shell is inter)-.1 F(-)-.2 E(acti)184 204 Q -.15 +(ve)-.25 G(.).15 E F1144 216 Q F0 .959 +(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 .96 (cuting commands such as).15 F F1(cd)3.46 E F0 2.822 -(that change the current w)184 690 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.821 -(ysical directory structure)-.05 F 2.685(instead. By)184 702 R(def)2.685 +(ysical directory structure)-.05 F 2.685(instead. By)184 240 R(def)2.685 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 714 Q(.)-.65 E -(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/F1 10/Times-Bold@0 SF144 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 +(mands which change the current directory)184 252 Q(.)-.65 E F1144 +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 96 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 108 Q F0 -(traps are normally not inherited in such cases.)2.5 E F1144 120 Q -F0 .401(If no ar)184 120 R .401(guments follo)-.18 F 2.901(wt)-.25 G +(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 F1144 300 Q +F0 .401(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.4 E(the positional parameters are set to the)184 132 Q/F2 +(Otherwise,)5.4 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 F12.5 E -F0(.)A F1144 144 Q F0 1.944 -(Signal the end of options, cause all remaining)184 144 R F2(ar)4.444 E +F0(.)A F1144 324 Q F0 1.944 +(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.445(ea)-4.444 G 1.945 -(ssigned to the positional)-4.445 F 3.446(parameters. The)184 156 R F1 +(ssigned to the positional)-4.445 F 3.446(parameters. The)184 336 R F1 3.446 E F0(and)3.446 E F13.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 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 +(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 .178 -(to be turned of)144 196.8 R 2.678(f. The)-.25 F .178 +(to be turned of)144 376.8 R 2.678(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 208.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 .067(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 .429(The positional parameters from)144 249.6 R F2(n)2.929 E F0 +(is encountered.)144 400.8 Q F1(shift)108 417.6 Q F0([)2.5 E F2(n)A F0 +(])A .429(The positional parameters from)144 429.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 261.6 Q F1($#)2.582 +.428(rameters represented by the num-).15 F(bers)144 441.6 Q F1($#)2.582 E F0(do)2.582 E .082(wn to)-.25 F F1($#)2.582 E F0A 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 273.6 R(If)5.06 E F2(n)2.92 E F0 +(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 .143(positional parameters are not changed.)144 285.6 R +(,t)C(he)-2.56 E .143(positional parameters are not changed.)144 465.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 297.6 Q F1(shopt)108 314.4 Q 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-2.5 E F0 2.5(][)C F2(optname) --2.5 E F0(...])2.5 E -.8(To)144 326.4 S .64(ggle the v).8 F .639 +-2.5 E F0(...])2.5 E -.8(To)144 506.4 S .64(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 338.4 R 1.674 -.65(w, o)-.25 H 1.174 -.4(r, i).65 H +(listed belo)144 518.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 F12.874 E F0 .375 (option is used, those a)2.875 F -.25(va)-.2 G .375(ilable with the).25 F F12.875 E F0 .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 350.4 R .826 +(bu)2.875 G .375(iltin com-).2 F 3.326(mand. W)144 530.4 R .826 (ith no options, or with the)-.4 F F13.326 E F0 .825 (option, a list of all settable options is displayed, with an)3.326 F -.551(indication of whether or not each is set; if)144 362.4 R F2 +.551(indication of whether or not each is set; if)144 542.4 R F2 (optnames)3.052 E F0 .552 (are supplied, the output is restricted to those)3.052 F 2.55 -(options. The)144 374.4 R F12.55 E F0 .049(option causes output t\ +(options. The)144 554.4 R F12.55 E F0 .049(option causes output t\ o be displayed in a form that may be reused as input.)2.55 F(Other)5.049 -E(options ha)144 386.4 Q .3 -.15(ve t)-.2 H(he follo).15 E -(wing meanings:)-.25 E F1144 398.4 Q F0(Enable \(set\) each)180 -398.4 Q F2(optname)2.5 E F0(.)A F1144 410.4 Q F0 -(Disable \(unset\) each)180 410.4 Q F2(optname)2.5 E F0(.)A F1144 -422.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ -tus indicates whether the)180 422.4 R F2(optname)2.504 E F0(is)2.504 E -.256(set or unset.)180 434.4 R .256(If multiple)5.256 F F2(optname)2.756 +E(options ha)144 566.4 Q .3 -.15(ve t)-.2 H(he follo).15 E +(wing meanings:)-.25 E F1144 578.4 Q F0(Enable \(set\) each)180 +578.4 Q F2(optname)2.5 E F0(.)A F1144 590.4 Q F0 +(Disable \(unset\) each)180 590.4 Q F2(optname)2.5 E F0(.)A F1144 +602.4 Q F0 .003(Suppresses normal output \(quiet mode\); the return sta\ +tus indicates whether the)180 602.4 R F2(optname)2.504 E F0(is)2.504 E +.256(set or unset.)180 614.4 R .256(If multiple)5.256 F F2(optname)2.756 E F0(ar)2.756 E .256(guments are gi)-.18 F -.15(ve)-.25 G 2.756(nw).15 G (ith)-2.756 E F12.756 E F0 2.755(,t)C .255 -(he return status is zero if)-2.755 F(all)180 446.4 Q F2(optnames)2.5 E -F0(are enabled; non-zero otherwise.)2.5 E F1144 458.4 Q F0 -(Restricts the v)180 458.4 Q(alues of)-.25 E F2(optname)2.5 E F0 +(he return status is zero if)-2.755 F(all)180 626.4 Q F2(optnames)2.5 E +F0(are enabled; non-zero otherwise.)2.5 E F1144 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 F12.5 E F0(option to the)2.5 -E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 475.2 R F1 +E F1(set)2.5 E F0 -.2(bu)2.5 G(iltin.).2 E .624(If either)144 655.2 R F1 3.124 E F0(or)3.124 E F13.124 E F0 .624(is used with no) 3.124 F F2(optname)3.124 E F0(ar)3.124 E(guments,)-.18 E F1(shopt)3.124 E F0(sho)3.124 E .624(ws only those options which are)-.25 F 2.234 -(set or unset, respecti)144 487.2 R -.15(ve)-.25 G(ly).15 E 7.234(.U) +(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 499.2 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 -516 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) +696 R F2(optnames)4.044 E F0 1.545(are enabled, non-zero otherwise.) 4.045 F .696 (When setting or unsetting options, the return status is zero unless an) -144 528 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695(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.944 -(If set, the shell suppresses multiple e)184 586.8 R -.25(va)-.25 G +144 708 R F2(optname)3.196 E F0 .696(is not a v)3.196 F .695(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.944(If set, the shell suppresses multiple e)184 114 R -.25(va)-.25 G 1.945(luation of associati).25 F 2.245 -.15(ve a)-.25 H 1.945 -(rray subscripts during).15 F .857(arithmetic e)184 598.8 R .857 +(rray subscripts during).15 F .857(arithmetic e)184 126 R .857 (xpression e)-.15 F -.25(va)-.25 G .857(luation and while e).25 F -.15 (xe)-.15 G .857(cuting b).15 F .857(uiltins that can perform v)-.2 F -(ariable)-.25 E(assignments.)184 610.8 Q F1(autocd)144 622.8 Q F0 .199 -(If set, a command name that is the name of a directory is e)184 622.8 R +(ariable)-.25 E(assignments.)184 138 Q F1(autocd)144 150 Q F0 .199 +(If set, a command name that is the name of a directory is e)184 150 R -.15(xe)-.15 G .2(cuted as if it were the ar).15 F(gu-)-.18 E -(ment to the)184 634.8 Q F1(cd)2.5 E F0 2.5(command. This)2.5 F +(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 646.8 Q(ars)-.1 E F0 .156(If set, an ar)184 658.8 R .156 +F1(cdable_v)144 174 Q(ars)-.1 E F0 .156(If set, an ar)184 186 R .156 (gument to the)-.18 F F1(cd)2.656 E F0 -.2(bu)2.656 G .155 (iltin command that is not a directory is assumed to be the).2 F -(name of a v)184 670.8 Q(ariable whose v)-.25 E -(alue is the directory to change to.)-.25 E F1(cdspell)144 682.8 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 -682.8 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 -(corrected. The)184 694.8 R 1.488(errors check)3.988 F 1.487 +210 R F1(cd)3.555 E F0 1.055(command will be)3.555 F 3.988 +(corrected. The)184 222 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 706.8 R 4.57 -.65(y. I) +-.4 G(nd)-3.987 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 718.8 Q -(This option is only used by interacti)5 E .3 -.15(ve s)-.25 H(hells.) -.15 E(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/F1 10/Times-Bold@0 SF(checkhash)144 84 Q F0 -.737(If set,)184 96 R F1(bash)3.237 E F0 .736 +(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 .737 +(If set,)184 270 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 108 +(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 120 Q -F0 .448(If set,)184 132 R F1(bash)2.948 E F0 .448 +(xists, a normal path search is performed.)-.15 E F1(checkjobs)144 294 Q +F0 .448(If set,)184 306 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 144 R(an)3.439 E 3.439(yj)-.15 G +F -.15(ve)-.25 G 3.439(shell. If)184 318 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 156 R 2.203(ening command \(see)-.15 F +(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.704 E(al)184 168 Q -.1(wa)-.1 +-.15(ve)-.15 G 4.703(\). The).15 F(shell)4.704 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 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 +(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 204 Q 2.5(,u)-.65 G +(uiltin\) command and, if)-.2 F(necessary)184 378 Q 2.5(,u)-.65 G (pdates the v)-2.5 E(alues of)-.25 E F2(LINES)2.5 E F0(and)2.25 E F2 -(COLUMNS)2.5 E/F3 9/Times-Roman@0 SF(.)A F1(cmdhist)144 216 Q F0 1.202 -(If set,)184 216 R F1(bash)3.702 E F0 1.202(attempts to sa)3.702 F 1.502 +(COLUMNS)2.5 E/F3 9/Times-Roman@0 SF(.)A F1(cmdhist)144 390 Q F0 1.202 +(If set,)184 390 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 -228 Q 6.133(.T)-.65 G 1.133(his allo)-6.133 F 1.133 +402 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 240 Q .613(ault, b)-.1 F .613 +(This option is enabled by)6.132 F(def)184 414 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 252 Q(OR)-.162 E(Y)-.315 E F3(.)A F1 -(compat31)144 264 Q F0 .42(If set,)184 276 R F1(bash)2.92 E F0 .42 +(ve u)-.15 H(nder).15 E F2(HIST)184 426 Q(OR)-.162 E(Y)-.315 E F3(.)A F1 +(compat31)144 438 Q F0 .42(If set,)184 450 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 288 R F1([[)2.961 E F0 .462(conditional command')2.962 F(s)-.55 E F1 +184 462 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 300 R F1([[)3.21 E F0 .71(conditional command')3.21 F(s) +(using the)184 474 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 312 R/F4 10/Times-Italic@0 SF(str)3.321 E +(use ASCII collation and)184 486 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 324 Q F4(str) -2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 336 Q F0 1.41(If set,) -184 348 R F1(bash)3.91 E F0 1.41(changes its beha)3.91 F 1.409 +.19 F 3.321(sc)-.55 G(ollation)-3.321 E(sequence and)184 498 Q F4(str) +2.5 E(coll)-.37 E F0(\(3\).).51 E F1(compat32)144 510 Q F0 1.41(If set,) +184 522 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 360 R F1([[)2.922 E F0 .422 +(string comparison when using the)184 534 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 372 R .481 +(vious item\) and the ef)184 546 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 384 Q +(ersions 3.2 and earlier)-.15 F(continue with the ne)184 558 Q (xt command in the list after one terminates due to an interrupt.)-.15 E -F1(compat40)144 396 Q F0 1.409(If set,)184 408 R F1(bash)3.909 E F0 +F1(compat40)144 570 Q F0 1.409(If set,)184 582 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 420 R F1([[)4.508 E F0 2.007 +(string comparison when using the)184 594 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 432 R +4.507 E F0 2.007(operators \(see)4.507 F .769(description of)184 606 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 -444 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 456 Q -(xt command in the list.)-.15 E F1(compat41)144 468 Q F0 1.483(If set,) -184 480 R F1(bash)3.983 E F0 3.983(,w)C 1.483(hen in)-3.983 F F4(posix) -3.983 E F0 1.484 -(mode, treats a single quote in a double-quoted parameter)3.983 F -.15 -(ex)184 492 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 504 +618 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 630 Q +(xt command in the list.)-.15 E F1(compat41)144 642 Q F0 1.523(If set,) +184 654 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 +666 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 678 R .59(This is the beha)5.59 F .59(vior of)-.2 F .59 -(posix mode through v)184 516 R .589(ersion 4.1.)-.15 F .589(The def) +(posix mode through v)184 690 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 528 Q F1(compat42)144 540 Q -F0 1.796(If set,)184 552 R F1(bash)4.296 E F0 1.796 +(vious v)-.25 F(er)-.15 E(-)-.2 E(sions.)184 702 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 564 S(pansion using quote remo).15 E -.25 -(va)-.15 G(l.).25 E F1(compat43)144 576 Q F0 .141(If set,)184 588 R F1 +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 600 R .912(gument to)-.18 F F1 +(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 612 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 624 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 636 R -.15(xe)-.15 G .375(cuted \(this allo).15 F +.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 648 Q 2.5(sc)-.55 G(onte)-2.5 E(xt\).)-.15 E F1 -(compat44)144 660 Q F0 .441(If set,)184 672 R F1(bash)2.941 E F0(sa) +(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 -684 Q 2.5(ya)-.15 G(re used, re)-2.5 E -.05(ga)-.15 G +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 696 Q F0 .654 -(If set,)184 708 R F1(bash)3.153 E F0 .653(quotes all shell metacharact\ +(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 720 R 1.524(If not set,)6.524 F F1(bash)4.024 E +(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(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 2.667(from the set of characters that will\ - be quoted in completed \214lenames when these)184 84 R .028 -(metacharacters appear in shell v)184 96 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 108 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 120 T 1.922 -.4(r, a).25 H 1.422 -.15(ny d).4 H 1.123 +(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 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.123(his is acti)-6.123 F -.15(ve)-.25 G .59 (only when bash is using backslashes to quote completed \214lenames.)184 -132 R .59(This v)5.59 F .59(ariable is set)-.25 F(by def)184 144 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/F1 10/Times-Bold@0 SF(dir)144 156 Q(expand) --.18 E F0 .486(If set,)184 168 R F1(bash)2.986 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 .487(xpansion when perform-)-.15 F .18(ing \214lename completion.)184 -180 R .179(This changes the contents of the readline editing b)5.18 F +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 192 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 204 Q F0 .858(If set,)184 -204 R F1(bash)3.358 E F0 .858 +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 216 Q(xist.)-.15 E -F1(dotglob)144 228 Q F0 .165(If set,)184 228 R F1(bash)2.665 E F0 .165 +(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 240 Q F1 -.63(``)2.5 G -.55(.').63 +(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 252 Q F0 1.386(If set, a non-interacti) -184 252 R 1.686 -.15(ve s)-.25 H 1.386(hell will not e).15 F 1.386 +(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 264 Q(gument to the)-.18 +(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 276 Q F0 .717 -(If set, aliases are e)184 288 R .717(xpanded as described abo)-.15 F +-.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 300 Q(ault for interacti)-.1 E .3 -.15(ve s)-.25 H(hells.) -.15 E F1(extdeb)144 312 Q(ug)-.2 E F0 .671(If set at shell in)184 324 R +(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 336 R F12.721 E(ugger)-.2 E F0 +.221(identical to the)184 528 R F12.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 348 Q -(uggers is enabled:)-.2 E F1(1.)184 360 Q F0(The)220 360 Q F14.25 +(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 F14.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 372 Q -(gument.)-.18 E F1(2.)184 384 Q F0 1.667(If the command run by the)220 -384 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 396 -Q -.15(xe)-.15 G(cuted.).15 E F1(3.)184 408 Q F0 .84 -(If the command run by the)220 408 R F1(DEB)3.34 E(UG)-.1 E F0 .841 +(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 420 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 432 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 444 Q F2 -.27(BA)220 444 S(SH_ARGC).27 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 456 Q --.15(ve)-.15 G(.).15 E F1(5.)184 468 Q F0 1.637(Function tracing is ena\ -bled: command substitution, shell functions, and sub-)220 468 R -(shells in)220 480 Q -.2(vo)-.4 G -.1(ke).2 G 2.5(dw).1 G(ith)-2.5 E F1 +(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 492 Q F0 1.082(Error tracing is enabled: comman\ -d substitution, shell functions, and subshells)220 492 R(in)220 504 Q +(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 516 Q F0 .4(If set, the e)184 516 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 528 Q -F0(are enabled.)2.5 E F1(extquote)144 540 Q F0 2.473(If set,)184 552 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 564 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(failglob)144 576 Q F0 -1.425(If set, patterns which f)184 576 R 1.425 -(ail to match \214lenames during pathname e)-.1 F 1.424 -(xpansion result in an)-.15 F -.15(ex)184 588 S(pansion error).15 E(.) --.55 E F1 -.25(fo)144 600 S -.18(rc).25 G(e_\214gnor).18 E(e)-.18 E F0 -.936(If set, the suf)184 612 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 624 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 636 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 648 Q(ault.)-.1 E F1(globasciiranges)144 660 Q F0 2.519 -(If set, range e)184 672 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 684 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 696 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 708 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 720 Q(.)-.55 E -(GNU Bash 5.0)72 768 Q(2004 Apr 20)149.565 E(19)198.725 E 0 Cg EP +-.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(globstar)144 84 Q F0 -.519(If set, the pattern)184 84 R F1(**)3.019 E F0 .519 -(used in a pathname e)3.019 F .519(xpansion conte)-.15 F .518 +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 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 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 96 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 -108 Q F1(gnu_errfmt)144 120 Q F0(If set, shell error messages are writt\ -en in the standard GNU error message format.)184 132 Q F1(histappend)144 -144 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 -156 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 168 Q -(xits, rather than o)-.15 E -.15(ve)-.15 G(rwriting the \214le.).15 E F1 -(histr)144 180 Q(eedit)-.18 E F0 .575(If set, and)184 192 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 204 Q F1(histv)144 216 Q -(erify)-.1 E F0 .403(If set, and)184 228 R F1 -.18(re)2.903 G(adline).18 -E F0 .403 +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 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 240 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 252 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 264 Q F0 1.182(If set, and)184 276 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 -288 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 300 Q -.15(ve)-.15 G 2.5(\). This).15 F -(is enabled by def)2.5 E(ault.)-.1 E F1(huponexit)144 312 Q F0(If set,) -184 324 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 F1(inherit_err)144 336 Q(exit)-.18 E F0 .22 -(If set, command substitution inherits the v)184 348 R .219(alue of the) +.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 360 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 372 Q -.1(ve)-.1 G(_comments).1 E -F0 .33(If set, allo)184 384 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 +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 396 R 1.267 -.15(ve s)-.25 -H .967(hell \(see).15 F F2(COMMENTS)3.467 E F0(abo)3.217 E -.15(ve)-.15 -G 3.467(\). This).15 F .967(option is)3.467 F(enabled by def)184 408 Q -(ault.)-.1 E F1(lastpipe)144 420 Q F0 .066 -(If set, and job control is not acti)184 420 R -.15(ve)-.25 G 2.566(,t) +(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 432 Q(vironment.)-.4 E F1(lithist)144 444 Q F0 .655(If set, and the) -184 444 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 456 Q +(with embedded ne)184 648 Q (wlines rather than using semicolon separators where possible.)-.25 E F1 -(localv)144 468 Q(ar_inherit)-.1 E F0 .421(If set, local v)184 480 R +(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 -492 S .174(ists at a pre).15 F .174(vious scope before an)-.25 F 2.673 +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 504 Q -F1(login_shell)144 516 Q F0 .486 -(The shell sets this option if it is started as a login shell \(see)184 -528 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 540 S(lue may not be changed.).25 -E F1(mailwar)144 552 Q(n)-.15 E F0 .815(If set, and a \214le that)184 -564 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 576 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 588 -Q F0 .324(If set, and)184 600 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 612 Q F1 -(nocaseglob)144 624 Q F0 .437(If set,)184 636 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 648 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 660 Q F0 1.193(If set,)184 -672 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 684 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 696 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ -le completions as part of programmable com-)-.15 F(pletion.)184 708 Q +(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 @@ -2654,440 +2646,468 @@ 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(nullglob)144 84 Q F0 -.855(If set,)184 96 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 108 S(pand to a null string, rather than themselv) -.15 E(es.)-.15 E F1(pr)144 120 Q(ogcomp)-.18 E F0 .676 -(If set, the programmable completion f)184 132 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 144 Q -(This option is enabled by def)5 E(ault.)-.1 E F1(pr)144 156 Q(omptv) --.18 E(ars)-.1 E F0 1.448(If set, prompt strings under)184 168 R 1.448 -(go parameter e)-.18 F 1.447(xpansion, command substitution, arithmetic) --.15 F -.15(ex)184 180 S .17(pansion, and quote remo).15 F -.25(va)-.15 -G 2.67(la).25 G .17(fter being e)-2.67 F .17(xpanded as described in) --.15 F/F2 9/Times-Bold@0 SF(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 192 Q(ault.)-.1 -E F1 -.18(re)144 204 S(stricted_shell).18 E F0 1.069 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(login_shell)144 84 Q +F0 .486 +(The shell sets this option if it is started as a login shell \(see)184 +96 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 108 S +(lue may not be changed.).25 E F1(mailwar)144 120 Q(n)-.15 E F0 .815 +(If set, and a \214le that)184 132 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 144 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 156 Q F0 .324(If set, and)184 168 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 180 Q F1 +(nocaseglob)144 192 Q F0 .437(If set,)184 204 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 216 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 228 Q F0 1.193(If set,)184 +240 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 252 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 264 S .622(rd e).1 F .623(xpansions, or when \214ltering possib\ +le completions as part of programmable com-)-.15 F(pletion.)184 276 Q F1 +(nullglob)144 288 Q F0 .855(If set,)184 300 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 312 S +(pand to a null string, rather than themselv).15 E(es.)-.15 E F1(pr)144 +324 Q(ogcomp)-.18 E F0 .676(If set, the programmable completion f)184 +336 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 348 Q(This option is enabled by def)5 E(ault.)-.1 E F1 +(pr)144 360 Q(omptv)-.18 E(ars)-.1 E F0 1.448 +(If set, prompt strings under)184 372 R 1.448(go parameter e)-.18 F +1.447(xpansion, command substitution, arithmetic)-.15 F -.15(ex)184 384 +S .17(pansion, and quote remo).15 F -.25(va)-.15 G 2.67(la).25 G .17 +(fter being e)-2.67 F .17(xpanded as described in)-.15 F F2(PR)2.671 E +(OMPTING)-.27 E F0(abo)2.421 E -.15(ve)-.15 G(.).15 E +(This option is enabled by def)184 396 Q(ault.)-.1 E F1 -.18(re)144 408 +S(stricted_shell).18 E F0 1.069 (The shell sets this option if it is started in restricted mode \(see) -184 216 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 228 Q 2.86 +184 420 R F2 1.069(RESTRICTED SHELL)3.569 F F0(belo)184 432 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 240 Q(wing the startup \214les to disco)-.25 E +(-).15 E(cuted, allo)184 444 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 252 Q(erbose)-.1 E F0 .502(If set, the)184 264 R F1 +F1(shift_v)144 456 Q(erbose)-.1 E F0 .502(If set, the)184 468 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 276 Q F1(sour) -144 288 Q(cepath)-.18 E F0 .77(If set, the)184 300 R F1(sour)3.27 E(ce) +(xceeds the number)-.15 F(of positional parameters.)184 480 Q F1(sour) +144 492 Q(cepath)-.18 E F0 .77(If set, the)184 504 R F1(sour)3.27 E(ce) -.18 E F0(\()3.27 E F1(.)A F0 3.27(\)b)C .77(uiltin uses the v)-3.47 F .771(alue of)-.25 F F2 -.666(PA)3.271 G(TH)-.189 E F0 .771 (to \214nd the directory containing the)3.021 F -(\214le supplied as an ar)184 312 Q 2.5(gument. This)-.18 F -(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 324 Q F0 -(If set, the)184 336 Q F1(echo)2.5 E F0 -.2(bu)2.5 G(iltin e).2 E +(\214le supplied as an ar)184 516 Q 2.5(gument. This)-.18 F +(option is enabled by def)2.5 E(ault.)-.1 E F1(xpg_echo)144 528 Q F0 +(If set, the)184 540 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 352.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 364.8 R +108 556.8 Q F0([)2.5 E F1A F0(])A 1.002(Suspend the e)144 568.8 R -.15(xe)-.15 G 1.002(cution of this shell until it recei).15 F -.15(ve) -.25 G 3.501(sa).15 G F2(SIGCONT)A F0 3.501(signal. A)3.251 F 1.001 -(login shell cannot be)3.501 F .022(suspended; the)144 376.8 R F1 +(login shell cannot be)3.501 F .022(suspended; the)144 580.8 R F1 2.522 E F0 .022(option can be used to o)2.522 F -.15(ve)-.15 G .022 (rride this and force the suspension.).15 F .023(The return status is) -5.023 F 2.5(0u)144 388.8 S(nless the shell is a login shell and)-2.5 E +5.023 F 2.5(0u)144 592.8 S(nless the shell is a login shell and)-2.5 E F12.5 E F0(is not supplied, or if job control is not enabled.)2.5 -E F1(test)108 405.6 Q/F3 10/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1([) -108 417.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 -(Return a status of 0 \(true\) or 1 \(f)144 417.6 R .877 +E F1(test)108 609.6 Q F3 -.2(ex)2.5 G(pr).2 E F1([)108 621.6 Q F3 -.2 +(ex)2.5 G(pr).2 E F1(])2.5 E F0 .878 +(Return a status of 0 \(true\) or 1 \(f)144 621.6 R .877 (alse\) depending on the e)-.1 F -.25(va)-.25 G .877 -(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 429.6 +(luation of the conditional e).25 F(xpression)-.15 E F3 -.2(ex)144 633.6 S(pr).2 E F0 5.53(.E).73 G .53 (ach operator and operand must be a separate ar)-5.53 F 3.03 (gument. Expressions)-.18 F .53(are composed of the)3.03 F 3.08 -(primaries described abo)144 441.6 R 3.38 -.15(ve u)-.15 H(nder).15 E F2 +(primaries described abo)144 645.6 R 3.38 -.15(ve u)-.15 H(nder).15 E F2 (CONDITION)5.58 E 3.079(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(.)A F1(test)7.579 E F0 3.079(does not accept an)5.579 F(y)-.15 E -(options, nor does it accept and ignore an ar)144 453.6 Q(gument of)-.18 +(options, nor does it accept and ignore an ar)144 657.6 Q(gument of)-.18 E F12.5 E F0(as signifying the end of options.)2.5 E .785 -(Expressions may be combined using the follo)144 471.6 R .786 +(Expressions may be combined using the follo)144 675.6 R .786 (wing operators, listed in decreasing order of prece-)-.25 F 3.412 -(dence. The)144 483.6 R -.25(eva)3.412 G .912 +(dence. The)144 687.6 R -.25(eva)3.412 G .912 (luation depends on the number of ar).25 F .911(guments; see belo)-.18 F 4.711 -.65(w. O)-.25 H .911(perator precedence is).65 F -(used when there are \214v)144 495.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G -(ore ar)-2.5 E(guments.)-.18 E F1(!)144 507.6 Q F3 -.2(ex)2.5 G(pr).2 E -F0 -.35(Tr)180 507.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 519.6 Q F3 -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 -.26(Returns the v)180 519.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 531.6 Q F3 -.2 -(ex)144 543.6 S(pr1).2 E F02.5 E F1(a)A F3 -.2(ex)2.5 G(pr2).2 E F0 --.35(Tr)180 555.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 567.6 S -(pr1).2 E F02.5 E F1(o)A F3 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 -579.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 596.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 2.5(0a)144 614.4 S -.18(rg)-2.5 G(uments).18 E(The e) -180 626.4 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 638.4 S -.18 -(rg)-2.5 G(ument).18 E(The e)180 650.4 Q -(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 -E 2.5(2a)144 662.4 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) -180 674.4 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 686.4 R .38 -(gument is one of the unary conditional operators listed abo)-.18 F .68 --.15(ve u)-.15 H(nder).15 E F2(CONDI-)2.88 E(TION)180 698.4 Q .553 -(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 710.4 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(GNU Bash 5.0)72 768 Q(2004 Apr 20) -149.565 E(21)198.725 E 0 Cg EP +(used when there are \214v)144 699.6 Q 2.5(eo)-.15 G 2.5(rm)-2.5 G +(ore ar)-2.5 E(guments.)-.18 E F1(!)144 711.6 Q F3 -.2(ex)2.5 G(pr).2 E +F0 -.35(Tr)180 711.6 S(ue if).35 E F3 -.2(ex)2.5 G(pr).2 E F0(is f)3.23 +E(alse.)-.1 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 /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 2.5(3a)144 84 S -.18(rg)-2.5 G(uments).18 E -.236(The follo)180 96 R .236 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF(\()144 84 Q/F2 10 +/Times-Italic@0 SF -.2(ex)2.5 G(pr).2 E F1(\))2.5 E F0 .26 +(Returns the v)180 84 R .26(alue of)-.25 F F2 -.2(ex)2.76 G(pr).2 E F0 +5.26(.T)C .26(his may be used to o)-5.26 F -.15(ve)-.15 G .26 +(rride the normal precedence of opera-).15 F(tors.)180 96 Q F2 -.2(ex) +144 108 S(pr1).2 E F02.5 E F1(a)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35 +(Tr)180 120 S(ue if both).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(and)2.5 E F2 +-.2(ex)2.5 G(pr2).2 E F0(are true.)2.52 E F2 -.2(ex)144 132 S(pr1).2 E +F02.5 E F1(o)A F2 -.2(ex)2.5 G(pr2).2 E F0 -.35(Tr)180 144 S +(ue if either).35 E F2 -.2(ex)2.5 G(pr1).2 E F0(or)2.5 E F2 -.2(ex)2.5 G +(pr2).2 E F0(is true.)2.52 E F1(test)144 160.8 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 2.5(0a)144 178.8 S -.18(rg)-2.5 G(uments).18 E(The e) +180 190.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(1a)144 202.8 S -.18 +(rg)-2.5 G(ument).18 E(The e)180 214.8 Q +(xpression is true if and only if the ar)-.15 E(gument is not null.)-.18 +E 2.5(2a)144 226.8 S -.18(rg)-2.5 G(uments).18 E .37(If the \214rst ar) +180 238.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 250.8 R .38 +(gument is one of the unary conditional operators listed abo)-.18 F .68 +-.15(ve u)-.15 H(nder).15 E/F3 9/Times-Bold@0 SF(CONDI-)2.88 E(TION)180 +262.8 Q .553(AL EXPRESSIONS)-.18 F/F4 9/Times-Roman@0 SF(,)A F0 .552 +(the e)2.802 F .552(xpression is true if the unary test is true.)-.15 F +.552(If the \214rst ar)5.552 F(gu-)-.18 E(ment is not a v)180 274.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 286.8 S -.18(rg)-2.5 G +(uments).18 E .236(The follo)180 298.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 108 R 1.155 -.15(ve u) --.15 H(nder).15 E/F1 9/Times-Bold@0 SF(CONDITION)3.355 E .855 -(AL EXPRESSIONS)-.18 F/F2 9/Times-Roman@0 SF(,)A F0(the)3.104 E .578 -(result of the e)180 120 R .578(xpression is the result of the binary t\ -est using the \214rst and third ar)-.15 F(guments)-.18 E 1.333 -(as operands.)180 132 R(The)6.333 E/F3 10/Times-Bold@0 SF3.833 E -F0(and)3.833 E F33.832 E F0 1.332 +(the binary conditional operators listed abo)180 310.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 322.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 334.8 R(The)6.333 E F13.833 +E F0(and)3.833 E F13.832 E F0 1.332 (operators are considered binary operators when there are)3.832 F .558 -(three ar)180 144 R 3.058(guments. If)-.18 F .558(the \214rst ar)3.058 F -.558(gument is)-.18 F F3(!)3.058 E F0 3.058(,t)C .558(he v)-3.058 F .558 -(alue is the ne)-.25 F -.05(ga)-.15 G .558(tion of the tw).05 F(o-ar)-.1 -E(gument)-.18 E .521(test using the second and third ar)180 156 R 3.021 -(guments. If)-.18 F .521(the \214rst ar)3.021 F .52(gument is e)-.18 F -(xactly)-.15 E F3(\()3.02 E F0 .52(and the third)3.02 F(ar)180 168 Q -.485(gument is e)-.18 F(xactly)-.15 E F3(\))2.985 E F0 2.985(,t)C .485 -(he result is the one-ar)-2.985 F .485(gument test of the second ar)-.18 -F 2.985(gument. Other)-.18 F(-)-.2 E(wise, the e)180 180 Q -(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 192 S -.18(rg)-2.5 G -(uments).18 E .385(If the \214rst ar)180 204 R .385(gument is)-.18 F F3 -(!)2.885 E F0 2.885(,t)C .385(he result is the ne)-2.885 F -.05(ga)-.15 -G .384(tion of the three-ar).05 F .384(gument e)-.18 F .384 -(xpression com-)-.15 F 1.647(posed of the remaining ar)180 216 R 4.147 -(guments. Otherwise,)-.18 F 1.647(the e)4.147 F 1.648 -(xpression is parsed and e)-.15 F -.25(va)-.25 G(luated).25 E -(according to precedence using the rules listed abo)180 228 Q -.15(ve) --.15 G(.).15 E 2.5(5o)144 240 S 2.5(rm)-2.5 G(ore ar)-2.5 E(guments)-.18 -E 1.635(The e)180 252 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 264 Q -.15(ve)-.15 G(.).15 E(When used with)144 282 Q F3(test) -2.5 E F0(or)2.5 E F3([)2.5 E F0 2.5(,t)C(he)-2.5 E F3(<)2.5 E F0(and)2.5 -E F3(>)2.5 E F0(operators sort le)2.5 E -(xicographically using ASCII ordering.)-.15 E F3(times)108 298.8 Q F0 +(three ar)180 346.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 +358.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 370.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 382.8 Q(xpression is f)-.15 E(alse.)-.1 E 2.5(4a)144 +394.8 S -.18(rg)-2.5 G(uments).18 E .385(If the \214rst ar)180 406.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 +(posed of the remaining ar)180 418.8 R 4.147(guments. Otherwise,)-.18 F +1.647(the e)4.147 F 1.648(xpression is parsed and e)-.15 F -.25(va)-.25 +G(luated).25 E(according to precedence using the rules listed abo)180 +430.8 Q -.15(ve)-.15 G(.).15 E 2.5(5o)144 442.8 S 2.5(rm)-2.5 G(ore ar) +-2.5 E(guments)-.18 E 1.635(The e)180 454.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 +466.8 Q -.15(ve)-.15 G(.).15 E(When used with)144 484.8 Q F1(test)2.5 E +F0(or)2.5 E F1([)2.5 E F0 2.5(,t)C(he)-2.5 E F1(<)2.5 E F0(and)2.5 E F1 +(>)2.5 E F0(operators sort le)2.5 E +(xicographically using ASCII ordering.)-.15 E F1(times)108 501.6 Q F0 1.229(Print the accumulated user and system times for the shell and for\ - processes run from the shell.)144 298.8 R(The return status is 0.)144 -310.8 Q F3(trap)108 327.6 Q F0([)2.5 E F3(\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 .703(The command)144 339.6 R F4(ar)3.533 E(g)-.37 E F0 .703 -(is to be read and e)3.423 F -.15(xe)-.15 G .702 -(cuted when the shell recei).15 F -.15(ve)-.25 G 3.202(ss).15 G -(ignal\(s\))-3.202 E F4(sigspec)3.202 E F0 5.702(.I).31 G(f)-5.702 E F4 -(ar)3.532 E(g)-.37 E F0(is)3.422 E .608(absent \(and there is a single) -144 351.6 R F4(sigspec)3.108 E F0 3.108(\)o)C(r)-3.108 E F33.108 E -F0 3.108(,e)C .608 + processes run from the shell.)144 501.6 R(The return status is 0.)144 +513.6 Q F1(trap)108 530.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 542.4 R F2(ar)3.533 E(g)-.37 E F0 .703(is to be read and e)3.423 F +-.15(xe)-.15 G .702(cuted when the shell recei).15 F -.15(ve)-.25 G +3.202(ss).15 G(ignal\(s\))-3.202 E F2(sigspec)3.202 E F0 5.702(.I).31 G +(f)-5.702 E F2(ar)3.532 E(g)-.37 E F0(is)3.422 E .608 +(absent \(and there is a single)144 554.4 R F2(sigspec)3.108 E F0 3.108 +(\)o)C(r)-3.108 E F13.108 E F0 3.108(,e)C .608 (ach speci\214ed signal is reset to its original disposition)-3.108 F -.659(\(the v)144 363.6 R .659(alue it had upon entrance to the shell\).) --.25 F(If)5.658 E F4(ar)3.488 E(g)-.37 E F0 .658 -(is the null string the signal speci\214ed by each)3.378 F F4(sigspec) -144.34 375.6 Q F0 .58(is ignored by the shell and by the commands it in) -3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F4(ar)3.411 E(g)-.37 E -F0 .581(is not present and)3.301 F F33.081 E F0(has)3.081 E 1.215 -(been supplied, then the trap commands associated with each)144 387.6 R -F4(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 -F(gu-)-.18 E .86(ments are supplied or if only)144 399.6 R F33.36 -E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F3(trap)3.36 E F0 .86 +.659(\(the v)144 566.4 R .659(alue it had upon entrance to the shell\).) +-.25 F(If)5.658 E F2(ar)3.488 E(g)-.37 E F0 .658 +(is the null string the signal speci\214ed by each)3.378 F F2(sigspec) +144.34 578.4 Q F0 .58(is ignored by the shell and by the commands it in) +3.39 F -.2(vo)-.4 G -.1(ke).2 G 3.081(s. If).1 F F2(ar)3.411 E(g)-.37 E +F0 .581(is not present and)3.301 F F13.081 E F0(has)3.081 E 1.215 +(been supplied, then the trap commands associated with each)144 590.4 R +F2(sigspec)4.054 E F0 1.214(are displayed.)4.024 F 1.214(If no ar)6.214 +F(gu-)-.18 E .86(ments are supplied or if only)144 602.4 R F13.36 +E F0 .86(is gi)3.36 F -.15(ve)-.25 G(n,).15 E F1(trap)3.36 E F0 .86 (prints the list of commands associated with each)3.36 F 2.83 -(signal. The)144 411.6 R F32.83 E F0 .33(option causes the shell \ +(signal. The)144 614.4 R F12.83 E F0 .33(option causes the shell \ to print a list of signal names and their corresponding num-)2.83 F 4.31 -(bers. Each)144 423.6 R F4(sigspec)4.65 E F0 1.811 -(is either a signal name de\214ned in <)4.62 F F4(signal.h)A F0 1.811 +(bers. Each)144 626.4 R F2(sigspec)4.65 E F0 1.811 +(is either a signal name de\214ned in <)4.62 F F2(signal.h)A F0 1.811 (>, or a signal number)B 6.811(.S)-.55 G(ignal)-6.811 E -(names are case insensiti)144 435.6 Q .3 -.15(ve a)-.25 H(nd the).15 E -F1(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649(If a)144 453.6 R F4 -(sigspec)4.489 E F0(is)4.459 E F1(EXIT)4.149 E F0 1.649 -(\(0\) the command)3.899 F F4(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F +(names are case insensiti)144 638.4 Q .3 -.15(ve a)-.25 H(nd the).15 E +F3(SIG)2.5 E F0(pre\214x is optional.)2.25 E 1.649(If a)144 656.4 R F2 +(sigspec)4.489 E F0(is)4.459 E F3(EXIT)4.149 E F0 1.649 +(\(0\) the command)3.899 F F2(ar)4.479 E(g)-.37 E F0 1.649(is e)4.369 F -.15(xe)-.15 G 1.649(cuted on e).15 F 1.648(xit from the shell.)-.15 F -1.648(If a)6.648 F F4(sigspec)4.488 E F0(is)4.458 E F1(DEB)144 465.6 Q -(UG)-.09 E F2(,)A F0 1.167(the command)3.417 F F4(ar)3.997 E(g)-.37 E F0 +1.648(If a)6.648 F F2(sigspec)4.488 E F0(is)4.458 E F3(DEB)144 668.4 Q +(UG)-.09 E F4(,)A F0 1.167(the command)3.417 F F2(ar)3.997 E(g)-.37 E F0 1.167(is e)3.887 F -.15(xe)-.15 G 1.167(cuted before e).15 F -.15(ve) --.25 G(ry).15 E F4 1.168(simple command)3.667 F F0(,)A F4(for)3.668 E F0 -(command,)3.668 E F4(case)3.668 E F0(com-)3.668 E(mand,)144 477.6 Q F4 +-.25 G(ry).15 E F2 1.168(simple command)3.667 F F0(,)A F2(for)3.668 E F0 +(command,)3.668 E F2(case)3.668 E F0(com-)3.668 E(mand,)144 680.4 Q F2 (select)2.647 E F0 .147(command, e)2.647 F -.15(ve)-.25 G .147 -(ry arithmetic).15 F F4(for)2.647 E F0 .146 +(ry arithmetic).15 F F2(for)2.647 E F0 .146 (command, and before the \214rst command e)2.647 F -.15(xe)-.15 G .146 -(cutes in a).15 F .145(shell function \(see)144 489.6 R F1 .145 +(cutes in a).15 F .145(shell function \(see)144 692.4 R F3 .145 (SHELL GRAMMAR)2.645 F F0(abo)2.395 E -.15(ve)-.15 G 2.646(\). Refer).15 -F .146(to the description of the)2.646 F F3(extdeb)2.646 E(ug)-.2 E F0 -.146(option to)2.646 F(the)144 501.6 Q F3(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 F3(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 -F1(RETURN)3.2 E F2(,)A F0 .7(the com-)2.95 F(mand)144 513.6 Q F4(ar) +F .146(to the description of the)2.646 F F1(extdeb)2.646 E(ug)-.2 E F0 +.146(option to)2.646 F(the)144 704.4 Q F1(shopt)3.201 E F0 -.2(bu)3.201 +G .7(iltin for details of its ef).2 F .7(fect on the)-.25 F F1(DEB)3.2 E +(UG)-.1 E F0 3.2(trap. If)3.2 F(a)3.2 E F2(sigspec)3.54 E F0(is)3.51 E +F3(RETURN)3.2 E F4(,)A F0 .7(the com-)2.95 F(mand)144 716.4 Q F2(ar) 3.473 E(g)-.37 E F0 .643(is e)3.363 F -.15(xe)-.15 G .643 (cuted each time a shell function or a script e).15 F -.15(xe)-.15 G -.644(cuted with the).15 F F3(.)3.144 E F0(or)3.144 E F3(sour)3.144 E(ce) --.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 525.6 Q -.15(xe) --.15 G(cuting.).15 E .961(If a)144 543.6 R F4(sigspec)3.801 E F0(is) -3.771 E F1(ERR)3.461 E F2(,)A F0 .961(the command)3.211 F F4(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(single simple command\), a list, or a compound command ret\ -urns a non\255zero e)144 555.6 R .185(xit status, subject to)-.15 F .452 -(the follo)144 567.6 R .452(wing conditions.)-.25 F(The)5.452 E F1(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 579.6 R .387(wing a)-.25 F F3(while) -2.887 E F0(or)2.887 E F3(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.898 E F0 .388 -(statement, part)4.848 F .778(of a command e)144 591.6 R -.15(xe)-.15 G -.778(cuted in a).15 F F3(&&)3.278 E F0(or)3.278 E F3(||)3.278 E F0 .778 -(list e)3.278 F .778(xcept the command follo)-.15 F .778 -(wing the \214nal)-.25 F F3(&&)3.278 E F0(or)3.278 E F3(||)3.277 E F0 -3.277(,a)C -.15(ny)-3.277 G 1.28(command in a pipeline b)144 603.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 -F3(!)3.78 E F0(.)A(These are the same conditions obe)144 615.6 Q -(yed by the)-.15 E F3(err)2.5 E(exit)-.18 E F0(\()2.5 E F3A F0 2.5 -(\)o)C(ption.)-2.5 E 1.095 +.644(cuted with the).15 F F1(.)3.144 E F0(or)3.144 E F1(sour)3.144 E(ce) +-.18 E F0 -.2(bu)3.144 G(iltins).2 E(\214nishes e)144 728.4 Q -.15(xe) +-.15 G(cuting.).15 E(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 .961(If a)144 84 R/F1 10/Times-Italic@0 SF +(sigspec)3.801 E F0(is)3.771 E/F2 9/Times-Bold@0 SF(ERR)3.461 E/F3 9 +/Times-Roman@0 SF(,)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 96 R .185(xit status, subject to)-.15 F .452(the follo)144 108 +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 120 R .387(wing a)-.25 F/F4 10 +/Times-Bold@0 SF(while)2.887 E F0(or)2.887 E F4(until)2.888 E F0 -.1(ke) +2.888 G(yw)-.05 E .388(ord, part of the test in an)-.1 F F1(if)2.898 E +F0 .388(statement, part)4.848 F .778(of a command e)144 132 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 144 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 156 Q(yed by the) +-.15 E F4(err)2.5 E(exit)-.18 E F0(\()2.5 E F4A F0 2.5(\)o)C +(ption.)-2.5 E 1.095 (Signals ignored upon entry to the shell cannot be trapped or reset.)144 -633.6 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 645.6 R .662 +174 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 186 R .662 (alues in a subshell or subshell en)-.25 F .662(vironment when one is) --.4 F 2.5(created. The)144 657.6 R(return status is f)2.5 E(alse if an) --.1 E(y)-.15 E F4(sigspec)2.84 E F0(is in)2.81 E -.25(va)-.4 G -(lid; otherwise).25 E F3(trap)2.5 E F0(returns true.)2.5 E F3(type)108 -674.4 Q F0([)2.5 E F3(\255aftpP)A F0(])A F4(name)2.5 E F0([)2.5 E F4 -(name)A F0(...])2.5 E -.4(Wi)144 686.4 S .174 -(th no options, indicate ho).4 F 2.674(we)-.25 G(ach)-2.674 E F4(name) +-.4 F 2.5(created. The)144 198 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 +214.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 226.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 -F3144 698.4 Q F0 .842(option is used,)3.342 F F3(type)3.342 E F0 -.843(prints a string which is one of)3.343 F F4(alias)3.343 E F0(,).27 E -F4 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F4(function)3.343 E F0 -(,).24 E F4 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F4 -(\214le)5.253 E F0(if)3.523 E F4(name)144.36 710.4 Q F0 .087 +F4144 238.8 Q F0 .842(option is used,)3.342 F F4(type)3.342 E F0 +.843(prints a string which is one of)3.343 F F1(alias)3.343 E F0(,).27 E +F1 -.1(ke)3.343 G(ywor)-.2 E(d)-.37 E F0(,).77 E F1(function)3.343 E F0 +(,).24 E F1 -.2(bu)3.343 G(iltin).2 E F0 3.343(,o).24 G(r)-3.343 E F1 +(\214le)5.253 E F0(if)3.523 E F1(name)144.36 250.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 F4 +(ve)-.25 G(ly).15 E 5.086(.I)-.65 G 2.586(ft)-5.086 G(he)-2.586 E F1 (name)2.946 E F0 .086(is not)2.766 F .118 -(found, then nothing is printed, and an e)144 722.4 R .118 +(found, then nothing is printed, and an e)144 262.8 R .118 (xit status of f)-.15 F .118(alse is returned.)-.1 F .119(If the)5.119 F -F32.619 E F0 .119(option is used,)2.619 F F3(type)2.619 E F0 -(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 .855 -(either returns the name of the disk \214le that w)144 84 R .855 -(ould be e)-.1 F -.15(xe)-.15 G .855(cuted if).15 F/F1 10/Times-Italic@0 -SF(name)3.715 E F0 .855(were speci\214ed as a com-)3.535 F .64 -(mand name, or nothing if)144 96 R/F2 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/F3 10/Times-Bold@0 SF3.141 E F0 .641 -(option forces a)3.141 F/F4 9/Times-Bold@0 SF -.666(PA)3.141 G(TH)-.189 -E F0 .113(search for each)144 108 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 F2 .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 F32.612 E -F0(and)144 120 Q F33.23 E F0 .73(print the hashed v)3.23 F .731 +F42.619 E F0 .119(option is used,)2.619 F F4(type)2.619 E F0 .855 +(either returns the name of the disk \214le that w)144 274.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 +286.8 R/F5 10/Courier@0 SF .64(type -t name)3.14 F F0 -.1(wo)3.14 G .641 +(uld not return).1 F F1(\214le)3.141 E F0 5.641(.T).18 G(he)-5.641 E F4 +3.141 E F0 .641(option forces a)3.141 F F2 -.666(PA)3.141 G(TH) +-.189 E F0 .113(search for each)144 298.8 R F1(name)2.613 E F0 2.613(,e) +C -.15(ve)-2.863 G 2.613(ni).15 G(f)-2.613 E F5 .113(type -t name)2.613 +F F0 -.1(wo)2.613 G .113(uld not return).1 F F1(\214le)2.613 E F0 5.113 +(.I).18 G 2.613(fa)-5.113 G .112(command is hashed,)-.001 F F4 +2.612 E F0(and)144 310.8 Q F43.23 E F0 .73(print the hashed v)3.23 +F .731 (alue, which is not necessarily the \214le that appears \214rst in)-.25 -F F4 -.666(PA)3.231 G(TH)-.189 E/F5 9/Times-Roman@0 SF(.)A F0 .731 -(If the)5.231 F F3144 132 Q F0 1.749(option is used,)4.249 F F3 -(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 144 R F3 +F F2 -.666(PA)3.231 G(TH)-.189 E F3(.)A F0 .731(If the)5.231 F F4 +144 322.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 334.8 R F4 3.244 E F0 .744(option is not also used.)3.244 F .744 (The table of hashed)5.744 F 1.223(commands is not consulted when using) -144 156 R F33.723 E F0 6.223(.T)C(he)-6.223 E F33.723 E F0 +144 346.8 R F43.723 E F0 6.223(.T)C(he)-6.223 E F43.723 E F0 1.223(option suppresses shell function lookup, as)3.723 F .325(with the) -144 168 R F3(command)2.825 E F0 -.2(bu)2.825 G(iltin.).2 E F3(type)5.325 -E F0 .325(returns true if all of the ar)2.825 F .326 +144 358.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 180 Q F3(ulimit)108 196.8 Q F0([)2.5 E F3 +(re not)-2.826 F(found.)144 370.8 Q F4(ulimit)108 387.6 Q F0([)2.5 E F4 (\255HSabcde\214klmnpqrstuvxPT)A F0([)2.5 E F1(limit)A F0(]])A(Pro)144 -208.8 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 +399.6 Q .244(vides control o)-.15 F -.15(ve)-.15 G 2.744(rt).15 G .244 (he resources a)-2.744 F -.25(va)-.2 G .244 (ilable to the shell and to processes started by it, on systems).25 F -.943(that allo)144 220.8 R 3.443(ws)-.25 G .943(uch control.)-3.443 F -(The)5.943 E F33.443 E F0(and)3.443 E F33.444 E F0 .944 +.943(that allo)144 411.6 R 3.443(ws)-.25 G .943(uch control.)-3.443 F +(The)5.943 E F43.443 E F0(and)3.443 E F43.444 E F0 .944 (options specify that the hard or soft limit is set for the)3.444 F(gi) -144 232.8 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 +144 423.6 Q -.15(ve)-.25 G 2.709(nr).15 G 2.709(esource. A)-2.709 F .208 (hard limit cannot be increased by a non-root user once it is set; a so\ -ft limit may)2.709 F .425(be increased up to the v)144 244.8 R .425 -(alue of the hard limit.)-.25 F .426(If neither)5.425 F F32.926 E -F0(nor)2.926 E F32.926 E F0 .426 +ft limit may)2.709 F .425(be increased up to the v)144 435.6 R .425 +(alue of the hard limit.)-.25 F .426(If neither)5.425 F F42.926 E +F0(nor)2.926 E F42.926 E F0 .426 (is speci\214ed, both the soft and)2.926 F .139(hard limits are set.)144 -256.8 R .139(The v)5.139 F .139(alue of)-.25 F F1(limit)2.729 E F0 .139 +447.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 268.8 R(alues)-.25 E F3(hard)3.241 E F0(,)A F3 -(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F3(unlimited)3.241 E F0 3.241(,w) +.741(of the special v)144 459.6 R(alues)-.25 E F4(hard)3.241 E F0(,)A F4 +(soft)3.241 E F0 3.241(,o)C(r)-3.241 E F4(unlimited)3.241 E F0 3.241(,w) C .741(hich stand for the current hard limit, the current)-3.241 F .78 -(soft limit, and no limit, respecti)144 280.8 R -.15(ve)-.25 G(ly).15 E +(soft limit, and no limit, respecti)144 471.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 292.8 R F32.999 E F0 +F .498(resource is printed, unless the)144 483.6 R F42.999 E F0 .499(option is gi)2.999 F -.15(ve)-.25 G 2.999(n. When).15 F .499 (more than one resource is speci\214ed, the)2.999 F -(limit name and unit are printed before the v)144 304.8 Q 2.5 -(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F3 -144 316.8 Q F0(All current limits are reported)180 316.8 Q F3 -144 328.8 Q F0(The maximum sock)180 328.8 Q(et b)-.1 E(uf)-.2 E -(fer size)-.25 E F3144 340.8 Q F0 -(The maximum size of core \214les created)180 340.8 Q F3144 352.8 -Q F0(The maximum size of a process')180 352.8 Q 2.5(sd)-.55 G(ata se) --2.5 E(gment)-.15 E F3144 364.8 Q F0 -(The maximum scheduling priority \("nice"\))180 364.8 Q F3144 -376.8 Q F0 +(limit name and unit are printed before the v)144 495.6 Q 2.5 +(alue. Other)-.25 F(options are interpreted as follo)2.5 E(ws:)-.25 E F4 +144 507.6 Q F0(All current limits are reported)180 507.6 Q F4 +144 519.6 Q F0(The maximum sock)180 519.6 Q(et b)-.1 E(uf)-.2 E +(fer size)-.25 E F4144 531.6 Q F0 +(The maximum size of core \214les created)180 531.6 Q F4144 543.6 +Q F0(The maximum size of a process')180 543.6 Q 2.5(sd)-.55 G(ata se) +-2.5 E(gment)-.15 E F4144 555.6 Q F0 +(The maximum scheduling priority \("nice"\))180 555.6 Q F4144 +567.6 Q F0 (The maximum size of \214les written by the shell and its children)180 -376.8 Q F3144 388.8 Q F0(The maximum number of pending signals)180 -388.8 Q F3144 400.8 Q F0 -(The maximum number of kqueues that may be allocated)180 400.8 Q F3 -144 412.8 Q F0(The maximum size that may be lock)180 412.8 Q -(ed into memory)-.1 E F3144 424.8 Q F0 -(The maximum resident set size \(man)180 424.8 Q 2.5(ys)-.15 G -(ystems do not honor this limit\))-2.5 E F3144 436.8 Q F0 .791(Th\ +567.6 Q F4144 579.6 Q F0(The maximum number of pending signals)180 +579.6 Q F4144 591.6 Q F0 +(The maximum number of kqueues that may be allocated)180 591.6 Q F4 +144 603.6 Q F0(The maximum size that may be lock)180 603.6 Q +(ed into memory)-.1 E F4144 615.6 Q F0 +(The maximum resident set size \(man)180 615.6 Q 2.5(ys)-.15 G +(ystems do not honor this limit\))-2.5 E F4144 627.6 Q F0 .791(Th\ e maximum number of open \214le descriptors \(most systems do not allo) -180 436.8 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F -(be set\))180 448.8 Q F3144 460.8 Q F0 -(The pipe size in 512-byte blocks \(this may not be set\))180 460.8 Q F3 -144 472.8 Q F0 -(The maximum number of bytes in POSIX message queues)180 472.8 Q F3 -144 484.8 Q F0(The maximum real-time scheduling priority)180 484.8 -Q F3144 496.8 Q F0(The maximum stack size)180 496.8 Q F3144 -508.8 Q F0(The maximum amount of cpu time in seconds)180 508.8 Q F3 -144 520.8 Q F0(The maximum number of processes a)180 520.8 Q -.25 -(va)-.2 G(ilable to a single user).25 E F3144 532.8 Q F0 .47 -(The maximum amount of virtual memory a)180 532.8 R -.25(va)-.2 G .47 -(ilable to the shell and, on some systems, to).25 F(its children)180 -544.8 Q F3144 556.8 Q F0(The maximum number of \214le locks)180 -556.8 Q F3144 568.8 Q F0(The maximum number of pseudoterminals)180 -568.8 Q F3144 580.8 Q F0(The maximum number of threads)180 580.8 Q -(If)144 597.6 Q F1(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve)-.25 G -.468(n, and the).15 F F32.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 .044 -(no option is gi)144 609.6 R -.15(ve)-.25 G .044(n, then).15 F F3 -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 F3 +180 627.6 R 3.29(wt)-.25 G .79(his v)-3.29 F .79(alue to)-.25 F +(be set\))180 639.6 Q F4144 651.6 Q F0 +(The pipe size in 512-byte blocks \(this may not be set\))180 651.6 Q F4 +144 663.6 Q F0 +(The maximum number of bytes in POSIX message queues)180 663.6 Q F4 +144 675.6 Q F0(The maximum real-time scheduling priority)180 675.6 +Q F4144 687.6 Q F0(The maximum stack size)180 687.6 Q F4144 +699.6 Q F0(The maximum amount of cpu time in seconds)180 699.6 Q F4 +144 711.6 Q F0(The maximum number of processes a)180 711.6 Q -.25 +(va)-.2 G(ilable to a single user).25 E(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 +/F0 10/Times-Roman@0 SF -.35(BA)72 48 S(SH_B).35 E(UIL)-.1 E 87.61 +(TINS\(1\) General)-.92 F(Commands Manual)2.5 E -.35(BA)90.11 G(SH_B).35 +E(UIL)-.1 E(TINS\(1\))-.92 E/F1 10/Times-Bold@0 SF144 84 Q F0 .47 +(The maximum amount of virtual memory a)180 84 R -.25(va)-.2 G .47 +(ilable to the shell and, on some systems, to).25 F(its children)180 96 +Q F1144 108 Q F0(The maximum number of \214le locks)180 108 Q F1 +144 120 Q F0(The maximum number of pseudoterminals)180 120 Q F1 +144 132 Q F0(The maximum number of threads)180 132 Q(If)144 148.8 +Q/F2 10/Times-Italic@0 SF(limit)3.058 E F0 .468(is gi)3.648 F -.15(ve) +-.25 G .468(n, and the).15 F F12.968 E F0 .468 +(option is not used,)2.968 F F2(limit)2.968 E F0 .468(is the ne)2.968 F +2.968(wv)-.25 G .468(alue of the speci\214ed resource.)-3.218 F(If)5.468 +E .044(no option is gi)144 160.8 R -.15(ve)-.25 G .044(n, then).15 F F1 +2.544 E F0 .045(is assumed.)2.545 F -1.11(Va)5.045 G .045 +(lues are in 1024-byte increments, e)1.11 F .045(xcept for)-.15 F F1 2.545 E F0 2.545(,w)C .045(hich is)-2.545 F 1.589(in seconds;)144 -621.6 R F34.089 E F0 4.089(,w)C 1.589 -(hich is in units of 512-byte blocks;)-4.089 F F34.089 E F0(,)A F3 -4.089 E F0(,)A F34.089 E F0(,)A F34.089 E F0(,)A F3 -4.089 E F0 4.089(,a)C(nd)-4.089 E F34.089 E F0 4.088(,w)C -1.588(hich are)-4.088 F 1.438(unscaled v)144 633.6 R 1.438 -(alues; and, when in Posix mode,)-.25 F F33.939 E F0(and)3.939 E -F33.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 645.6 R +172.8 R F14.089 E F0 4.089(,w)C 1.589 +(hich is in units of 512-byte blocks;)-4.089 F F14.089 E F0(,)A F1 +4.089 E F0(,)A F14.089 E F0(,)A F14.089 E F0(,)A F1 +4.089 E F0 4.089(,a)C(nd)-4.089 E F14.089 E F0 4.088(,w)C +1.588(hich are)-4.088 F 1.476(unscaled v)144 184.8 R 1.476 +(alues; and, when in posix mode,)-.25 F F13.976 E F0(and)3.976 E +F13.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 196.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 -657.6 S .5 -.25(ew l)-2.5 H(imit.).25 E F3(umask)108 674.4 Q F0([)2.5 E -F3A F0 2.5(][)C F3-2.5 E F0 2.5(][)C F1(mode)-2.5 E F0(])A -.2(The user \214le-creation mask is set to)144 686.4 R F1(mode)2.7 E F0 -5.2(.I).18 G(f)-5.2 E F1(mode)3.08 E F0(be)2.88 E .2 +208.8 S .5 -.25(ew l)-2.5 H(imit.).25 E F1(umask)108 225.6 Q F0([)2.5 E +F1A F0 2.5(][)C F1-2.5 E F0 2.5(][)C F2(mode)-2.5 E F0(])A +.2(The user \214le-creation mask is set to)144 237.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 698.4 R F1 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 -710.4 Q F1(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 -(alue of the mask is printed.)-.25 F(The)5.382 E F32.882 E F0 .382 +pted by)144 249.6 R F2 -.15(ch)2.566 G(mod).15 E F0(\(1\).).77 E(If)144 +261.6 Q F2(mode)3.262 E F0 .382(is omitted, the current v)3.062 F .382 +(alue of the mask is printed.)-.25 F(The)5.382 E F12.882 E F0 .382 (option causes the mask to be)2.882 F .547 -(printed in symbolic form; the def)144 722.4 R .547 +(printed in symbolic form; the def)144 273.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 F33.047 E F0 .547(option is supplied, and)3.047 F -(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 -/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(mode)144.38 84 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 96 Q -(as successfully changed or if no)-.1 E F1(mode)2.5 E F0(ar)2.5 E -(gument w)-.18 E(as supplied, and f)-.1 E(alse otherwise.)-.1 E/F2 10 -/Times-Bold@0 SF(unalias)108 112.8 Q F0<5bad>2.5 E F2(a)A F0 2.5(][)C F1 -(name)-2.5 E F0(...])2.5 E(Remo)144 124.8 Q 1.955 -.15(ve e)-.15 H(ach) -.15 E F1(name)4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 -F(If)6.655 E F24.155 E F0 1.655 -(is supplied, all alias de\214nitions are)4.155 F(remo)144 136.8 Q -.15 -(ve)-.15 G 2.5(d. The).15 F(return v)2.5 E -(alue is true unless a supplied)-.25 E F1(name)2.86 E F0 -(is not a de\214ned alias.)2.68 E F2(unset)108 153.6 Q F0<5bad>2.5 E F2 -(fv)A F0 2.5(][)C-2.5 E F2(n)A F0 2.5(][)C F1(name)-2.5 E F0(...]) -2.5 E -.15(Fo)144 165.6 S 3.827(re).15 G(ach)-3.827 E F1(name)3.827 E F0 +(he)-3.047 E F13.047 E F0 .547(option is supplied, and)3.047 F F2 +(mode)144.38 285.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 297.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 314.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 326.4 Q 1.955 -.15(ve e)-.15 H(ach).15 E F2(name) +4.155 E F0 1.655(from the list of de\214ned aliases.)4.155 F(If)6.655 E +F14.155 E F0 1.655(is supplied, all alias de\214nitions are)4.155 +F(remo)144 338.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 355.2 Q F0<5bad>2.5 E F1 +(fv)A F0 2.5(][)C-2.5 E F1(n)A F0 2.5(][)C F2(name)-2.5 E F0(...]) +2.5 E -.15(Fo)144 367.2 S 3.827(re).15 G(ach)-3.827 E F2(name)3.827 E F0 3.827(,r).18 G(emo)-3.827 E 1.627 -.15(ve t)-.15 H 1.327 (he corresponding v).15 F 1.327(ariable or function.)-.25 F 1.327 -(If the)6.327 F F23.828 E F0 1.328(option is gi)3.828 F -.15(ve) --.25 G 1.328(n, each).15 F F1(name)144.36 177.6 Q F0 1.551 +(If the)6.327 F F13.828 E F0 1.328(option is gi)3.828 F -.15(ve) +-.25 G 1.328(n, each).15 F F2(name)144.36 379.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 189.6 R F2 -4.641 E F0 2.141(is speci\214ed, each)4.641 F F1(name)5.001 E F0 +4.05 G 1.55(riables may not be).25 F 4.641(unset. If)144 391.2 R F1 +4.641 E F0 2.141(is speci\214ed, each)4.641 F F2(name)5.001 E F0 2.141(refers to a shell function, and the function de\214nition is)4.821 -F(remo)144 201.6 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F2 -2.537 E F0 .037(option is supplied, and)2.537 F F1(name)2.537 E F0 .037 -(is a v)2.537 F .037(ariable with the)-.25 F F1(namer)2.537 E(ef)-.37 E -F0(attrib)2.537 E(ute,)-.2 E F1(name)2.537 E F0(will)2.537 E .492 -(be unset rather than the v)144 213.6 R .492(ariable it references.)-.25 -F F25.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F2 +F(remo)144 403.2 Q -.15(ve)-.15 G 2.538(d. If).15 F(the)2.537 E F1 +2.537 E F0 .037(option is supplied, and)2.537 F F2(name)2.537 E F0 .037 +(is a v)2.537 F .037(ariable with the)-.25 F F2(namer)2.537 E(ef)-.37 E +F0(attrib)2.537 E(ute,)-.2 E F2(name)2.537 E F0(will)2.537 E .492 +(be unset rather than the v)144 415.2 R .492(ariable it references.)-.25 +F F15.492 E F0 .492(has no ef)2.992 F .492(fect if the)-.25 F F1 2.992 E F0 .492(option is supplied.)2.992 F .493(If no)5.493 F -.221(options are supplied, each)144 225.6 R F1(name)2.721 E F0 .221 +.221(options are supplied, each)144 427.2 R F2(name)2.721 E F0 .221 (refers to a v)2.721 F .22(ariable; if there is no v)-.25 F .22 (ariable by that name, an)-.25 F 2.72(yf)-.15 G(unc-)-2.72 E 1.188 -(tion with that name is unset.)144 237.6 R 1.189(Each unset v)6.189 F +(tion with that name is unset.)144 439.2 R 1.189(Each unset v)6.189 F 1.189(ariable or function is remo)-.25 F -.15(ve)-.15 G 3.689(df).15 G 1.189(rom the en)-3.689 F(vironment)-.4 E 3.206 -(passed to subsequent commands.)144 249.6 R 3.206(If an)8.206 F 5.706 +(passed to subsequent commands.)144 451.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 261.6 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) +F4(,)A F3(LINENO)144 463.2 Q F4(,)A F3(HISTCMD)4.347 E F4(,)A F3(FUNCN) 4.347 E(AME)-.18 E F4(,)A F3(GR)4.347 E(OUPS)-.27 E F4(,)A F0(or)4.348 E F3(DIRST)4.598 E -.495(AC)-.81 G(K).495 E F0 2.098(are unset, the)4.348 F 4.598(yl)-.15 G 2.098(ose their special)-4.598 F(properties, e)144 -273.6 Q -.15(ve)-.25 G 2.5(ni).15 G 2.5(ft)-2.5 G(he)-2.5 E 2.5(ya)-.15 +475.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 F1(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F2(wait)108 290.4 Q -F0([)2.5 E F2(\255fn)A F0 2.5(][)C F1(id ...)-2.5 E F0(])A -.8(Wa)144 -302.4 S .659(it for each speci\214ed child process and return its termi\ -nation status.).8 F(Each)5.659 E F1(id)3.169 E F0 .658(may be a process) -3.928 F .008(ID or a job speci\214cation; if a job spec is gi)144 314.4 -R -.15(ve)-.25 G .009(n, all processes in that job').15 F 2.509(sp)-.55 -G .009(ipeline are w)-2.509 F .009(aited for)-.1 F 5.009(.I)-.55 G(f) --5.009 E F1(id)144.01 326.4 Q F0 .522(is not gi)3.792 F -.15(ve)-.25 G +-.15 E F2(name)2.86 E F0(is readonly)2.68 E(.)-.65 E F1(wait)108 492 Q +F0([)2.5 E F1(\255fn)A F0 2.5(][)C F2(id ...)-2.5 E F0(])A -.8(Wa)144 +504 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 .658(may be a process) +3.928 F .008(ID or a job speci\214cation; if a job spec is gi)144 516 R +-.15(ve)-.25 G .009(n, all processes in that job').15 F 2.509(sp)-.55 G +.009(ipeline are w)-2.509 F .009(aited for)-.1 F 5.009(.I)-.55 G(f) +-5.009 E F2(id)144.01 528 Q F0 .522(is not gi)3.792 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.521 E(the)144 338.4 Q F2 -3.056 E F0 .556(option is supplied,)3.056 F F2(wait)3.057 E F0 -.1 +(nd the return status is zero.)-3.021 F(If)5.521 E(the)144 540 Q F1 +3.056 E F0 .556(option is supplied,)3.056 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 .557 -(If the)5.557 F F23.057 E F0 .587 -(option is supplied, and job control is enabled,)144 350.4 R F2(wait) -3.086 E F0(forces)3.086 E F1(id)3.086 E F0 .586 +(If the)5.557 F F13.057 E F0 .587 +(option is supplied, and job control is enabled,)144 552 R F1(wait)3.086 +E F0(forces)3.086 E F2(id)3.086 E F0 .586 (to terminate before returning its sta-)3.086 F .755 -(tus, instead of returning when it changes status.)144 362.4 R(If)5.756 -E F1(id)3.266 E F0 .756(speci\214es a non-e)4.026 F .756 -(xistent process or job, the)-.15 F .365(return status is 127.)144 374.4 -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 -386.4 Q(.)-.55 E/F5 10.95/Times-Bold@0 SF(SEE ALSO)72 403.2 Q F0 -(bash\(1\), sh\(1\))108 415.2 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20) +(tus, instead of returning when it changes status.)144 564 R(If)5.756 E +F2(id)3.266 E F0 .756(speci\214es a non-e)4.026 F .756 +(xistent process or job, the)-.15 F .365(return status is 127.)144 576 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 588 +Q(.)-.55 E/F5 10.95/Times-Bold@0 SF(SEE ALSO)72 604.8 Q F0 +(bash\(1\), sh\(1\))108 616.8 Q(GNU Bash 5.0)72 768 Q(2004 Apr 20) 149.565 E(24)198.725 E 0 Cg EP %%Trailer end diff --git a/doc/rbash.ps b/doc/rbash.ps index 9c4c5fd01..53602e2c6 100644 --- a/doc/rbash.ps +++ b/doc/rbash.ps @@ -1,6 +1,6 @@ %!PS-Adobe-3.0 %%Creator: groff version 1.22.3 -%%CreationDate: Mon Mar 19 09:43:23 2018 +%%CreationDate: Fri Sep 7 15:34:15 2018 %%DocumentNeededResources: font Times-Roman %%+ font Times-Bold %%DocumentSuppliedResources: procset grops 1.22 3 diff --git a/doc/version.texi b/doc/version.texi index 2072eeedf..7df19724e 100644 --- a/doc/version.texi +++ b/doc/version.texi @@ -2,10 +2,10 @@ Copyright (C) 1988-2018 Free Software Foundation, Inc. @end ignore -@set LASTCHANGE Thu Mar 15 11:29:49 EDT 2018 +@set LASTCHANGE Tue Aug 7 12:01:22 EDT 2018 @set EDITION 5.0 @set VERSION 5.0 -@set UPDATED 15 March 2018 -@set UPDATED-MONTH March 2018 +@set UPDATED 7 August 2018 +@set UPDATED-MONTH August 2018 diff --git a/eval.c b/eval.c index 3104bffef..f02d6e40e 100644 --- a/eval.c +++ b/eval.c @@ -69,6 +69,9 @@ reader_loop () our_indirection_level = ++indirection_level; + if (just_one_command) + reset_readahead_token (); + while (EOF_Reached == 0) { int code; diff --git a/examples/loadables/sleep.c b/examples/loadables/sleep.c index 736c8af1a..92b1a8fa1 100644 --- a/examples/loadables/sleep.c +++ b/examples/loadables/sleep.c @@ -48,13 +48,6 @@ #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/execute_cmd.c b/execute_cmd.c index 3759376e1..c5972c8d0 100644 --- a/execute_cmd.c +++ b/execute_cmd.c @@ -1522,6 +1522,11 @@ 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 */ @@ -1556,13 +1561,13 @@ 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 (); - /* Delete all traces that there were any jobs running. This is only for subshells. */ without_job_control (); @@ -1672,6 +1677,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)) @@ -2432,7 +2438,7 @@ static void lastpipe_cleanup (s) int s; { - unfreeze_jobs_list (); + set_jobs_list_frozen (s); } static int @@ -2442,7 +2448,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; @@ -2557,9 +2563,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; @@ -2605,9 +2611,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"); @@ -4062,9 +4068,13 @@ 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'. The CHKLOCAL flag means to set attributes or values on - an existing local variable */ + an existing local variable, if there is one. */ if (b && ((b->flags & (ASSIGNMENT_BUILTIN|LOCALVAR_BUILTIN)) == ASSIGNMENT_BUILTIN)) 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 diff --git a/externs.h b/externs.h index 9faf30598..b00e56e0d 100644 --- a/externs.h +++ b/externs.h @@ -109,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)); @@ -485,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)); diff --git a/general.h b/general.h index 14cbe833d..d89eec8e5 100644 --- a/general.h +++ b/general.h @@ -110,6 +110,13 @@ extern char *strcpy __P((char *, const char *)); ((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) diff --git a/include/shmbutil.h b/include/shmbutil.h index 264cae33f..36902f16b 100644 --- a/include/shmbutil.h +++ b/include/shmbutil.h @@ -50,6 +50,10 @@ extern int locale_utf8locale; /* 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 @@ -75,6 +79,9 @@ extern int locale_utf8locale; /* 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 @@ -111,7 +118,7 @@ extern int locale_utf8locale; /* XXX */ if (_f) \ mblength = 1; \ else if (locale_utf8locale && (((_str)[_i] & 0x80) == 0)) \ - mblength = 1; \ + mblength = (_str)[_i] != 0; \ else \ { \ state_bak = state; \ @@ -152,6 +159,8 @@ extern int locale_utf8locale; /* XXX */ _f = is_basic (*(_str)); \ if (_f) \ mblength = 1; \ + else if (locale_utf8locale && ((*(_str) & 0x80) == 0)) \ + mblength = *(_str) != 0; \ else \ { \ state_bak = state; \ @@ -271,7 +280,7 @@ extern int locale_utf8locale; /* XXX */ if (_k) \ mblength = 1; \ else if (locale_utf8locale && ((*(_src) & 0x80) == 0)) \ - mblength = 1; \ + mblength = *(_src) != 0; \ else \ { \ state_bak = state; \ @@ -445,6 +454,8 @@ extern int locale_utf8locale; /* 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; \ @@ -483,6 +494,8 @@ extern int locale_utf8locale; /* 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; \ diff --git a/jobs.c b/jobs.c index 45ee572d9..f517a248c 100644 --- a/jobs.c +++ b/jobs.c @@ -863,7 +863,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; } @@ -4771,6 +4771,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 diff --git a/jobs.h b/jobs.h index 4eca62609..6ebaf4de2 100644 --- a/jobs.h +++ b/jobs.h @@ -259,7 +259,8 @@ extern int give_terminal_to __P((pid_t, int)); extern void run_sigchld_trap __P((int)); extern int freeze_jobs_list __P((void)); -extern void unfreeze_jobs_list __P((void)); +extern void unfreeeze_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)); diff --git a/lib/malloc/malloc.c b/lib/malloc/malloc.c index 88d777e5a..5621adf41 100644 --- a/lib/malloc/malloc.c +++ b/lib/malloc/malloc.c @@ -84,6 +84,10 @@ #include #include +#if defined (HAVE_MMAP) +#include +#endif + /* Define getpagesize () if the system does not. */ #ifndef HAVE_GETPAGESIZE # include "getpagesize.h" @@ -111,6 +115,7 @@ # 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 */ @@ -197,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 */ @@ -288,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]; @@ -594,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) @@ -603,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) @@ -632,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; @@ -915,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 @@ -1053,12 +1108,9 @@ internal_realloc (mem, n, file, line, flags) /* If ok, use the same block, just marking its size as changed. */ 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); @@ -1076,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); @@ -1120,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. */ diff --git a/lib/malloc/mstats.h b/lib/malloc/mstats.h index 11389ffc0..dac029807 100644 --- a/lib/malloc/mstats.h +++ b/lib/malloc/mstats.h @@ -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)); diff --git a/lib/malloc/stats.c b/lib/malloc/stats.c index ae555a1da..05247970f 100644 --- a/lib/malloc/stats.c +++ b/lib/malloc/stats.c @@ -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); } diff --git a/lib/readline/display.c b/lib/readline/display.c index 75019efcf..b2ed11541 100644 --- a/lib/readline/display.c +++ b/lib/readline/display.c @@ -2987,7 +2987,8 @@ _rl_update_final (void) 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++; } diff --git a/lib/readline/doc/hstech.texi b/lib/readline/doc/hstech.texi index d28bd4856..dbc21c14d 100644 --- a/lib/readline/doc/hstech.texi +++ b/lib/readline/doc/hstech.texi @@ -403,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) @@ -476,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 diff --git a/lib/readline/doc/hsuser.texi b/lib/readline/doc/hsuser.texi index d21f65d0f..521ccc708 100644 --- a/lib/readline/doc/hsuser.texi +++ b/lib/readline/doc/hsuser.texi @@ -262,8 +262,8 @@ 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, and is performed -on each line individually without taking quoting on previous lines into -account. +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 @@ -277,9 +277,19 @@ 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 diff --git a/lib/readline/doc/rltech.texi b/lib/readline/doc/rltech.texi index 7d22b2cb6..baf036df5 100644 --- a/lib/readline/doc/rltech.texi +++ b/lib/readline/doc/rltech.texi @@ -846,12 +846,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) +@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) diff --git a/lib/readline/doc/rluser.texi b/lib/readline/doc/rluser.texi index 1c9acdcc1..1acc8cda9 100644 --- a/lib/readline/doc/rluser.texi +++ b/lib/readline/doc/rluser.texi @@ -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 @@ -802,7 +803,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 @@ -1352,7 +1353,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) @@ -2019,10 +2020,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. @@ -2032,16 +2033,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 @@ -2071,7 +2080,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}. @@ -2226,7 +2235,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 @@ -2235,14 +2244,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 @@ -2289,7 +2303,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 ;; diff --git a/lib/readline/doc/version.texi b/lib/readline/doc/version.texi index 9fefcfae8..79f419175 100644 --- a/lib/readline/doc/version.texi +++ b/lib/readline/doc/version.texi @@ -1,10 +1,10 @@ @ignore -Copyright (C) 1988-2017 Free Software Foundation, Inc. +Copyright (C) 1988-2018 Free Software Foundation, Inc. @end ignore -@set EDITION 7.0 -@set VERSION 7.0 -@set UPDATED 28 December 2017 -@set UPDATED-MONTH December 2017 +@set EDITION 8.0 +@set VERSION 8.0 +@set UPDATED 6 July 2018 +@set UPDATED-MONTH July 2018 -@set LASTCHANGE Thu Dec 28 14:44:16 EST 2017 +@set LASTCHANGE Fri Jul 6 16:25:22 MDT 2018 diff --git a/lib/readline/histexpand.c b/lib/readline/histexpand.c index e9c333d7e..92b996f9f 100644 --- a/lib/readline/histexpand.c +++ b/lib/readline/histexpand.c @@ -1,6 +1,6 @@ /* histexpand.c -- history expansion. */ -/* Copyright (C) 1989-2017 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. @@ -107,6 +107,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 */ @@ -961,7 +963,22 @@ history_expand (char *hstring, char **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) @@ -1049,7 +1066,29 @@ history_expand (char *hstring, char **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]; @@ -1429,11 +1468,11 @@ history_tokenize_word (const char *string, int 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++; @@ -1456,9 +1495,8 @@ history_tokenize_word (const char *string, int 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 = '('; @@ -1466,34 +1504,9 @@ history_tokenize_word (const char *string, int 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: @@ -1538,6 +1551,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; diff --git a/lib/readline/histfile.c b/lib/readline/histfile.c index 399bcc39f..dc64bde1c 100644 --- a/lib/readline/histfile.c +++ b/lib/readline/histfile.c @@ -1,6 +1,6 @@ /* histfile.c - functions to manipulate the history file. */ -/* Copyright (C) 1989-2017 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. @@ -396,7 +396,7 @@ read_history_range (const char *filename, int from, int 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); diff --git a/lib/readline/history.h b/lib/readline/history.h index fceb99cae..cc3de29a6 100644 --- a/lib/readline/history.h +++ b/lib/readline/history.h @@ -261,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; diff --git a/lib/readline/kill.c b/lib/readline/kill.c index 983a98482..9fdfc7728 100644 --- a/lib/readline/kill.c +++ b/lib/readline/kill.c @@ -322,7 +322,7 @@ rl_unix_word_rubout (int count, int 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); @@ -359,7 +359,7 @@ rl_unix_filename_rubout (int count, int key) while (rl_point && (whitespace (c) == 0) && c != '/') { - rl_point--; + rl_point--; /* XXX - multibyte? */ c = rl_line_buffer[rl_point - 1]; } } @@ -677,7 +677,7 @@ rl_bracketed_paste_begin (int count, int key) size_t len, cap; char *buf; - retval = 1; + retval = 0; len = 0; buf = xmalloc (cap = 64); @@ -708,7 +708,7 @@ rl_bracketed_paste_begin (int count, int key) if (len == cap) buf = xrealloc (buf, cap + 1); buf[len] = '\0'; - retval = rl_insert_text (buf); + retval = rl_insert_text (buf) == len ? 0 : 1; } xfree (buf); diff --git a/lib/readline/mbutil.c b/lib/readline/mbutil.c index 65543416c..17716357f 100644 --- a/lib/readline/mbutil.c +++ b/lib/readline/mbutil.c @@ -75,6 +75,57 @@ 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 (char *string, int seed, int count, int find_non_zero) { @@ -228,11 +279,16 @@ _rl_get_char_len (char *src, mbstate_t *ps) /* Look at no more than MB_CUR_MAX characters */ l = (size_t)strlen (src); - mb_cur_max = MB_CUR_MAX; - tmp = mbrlen((const char *)src, (l < mb_cur_max) ? l : mb_cur_max, ps); + 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; diff --git a/lib/readline/readline.c b/lib/readline/readline.c index 4842a02e0..678f989c5 100644 --- a/lib/readline/readline.c +++ b/lib/readline/readline.c @@ -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. */ @@ -664,11 +667,9 @@ readline_internal_charloop (void) static char * 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 @@ -1055,7 +1056,7 @@ _rl_subseq_result (int r, Keymap map, int key, int got_subseq) /* We probably shadowed a keymap, so keep going. */ r = _rl_dispatch (ANYOTHERKEY, m); } - else if (r && map[ANYOTHERKEY].function) + else if (r < 0 && map[ANYOTHERKEY].function) { /* We didn't match (r is probably -1), so return something to tell the caller that it should try ANYOTHERKEY for an diff --git a/lib/readline/readline.h b/lib/readline/readline.h index 2081b197b..4e08b2e97 100644 --- a/lib/readline/readline.h +++ b/lib/readline/readline.h @@ -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. */ diff --git a/lib/readline/rlmbutil.h b/lib/readline/rlmbutil.h index 8b88de40a..6fd03f6a0 100644 --- a/lib/readline/rlmbutil.h +++ b/lib/readline/rlmbutil.h @@ -173,6 +173,8 @@ _rl_wcwidth (wc) #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 */ diff --git a/lib/readline/rlprivate.h b/lib/readline/rlprivate.h index 05ee9302b..69943de52 100644 --- a/lib/readline/rlprivate.h +++ b/lib/readline/rlprivate.h @@ -382,6 +382,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)); @@ -511,6 +512,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; diff --git a/lib/readline/rltty.c b/lib/readline/rltty.c index 6d9071921..2ee36a7cb 100644 --- a/lib/readline/rltty.c +++ b/lib/readline/rltty.c @@ -691,7 +691,11 @@ rl_deprep_terminal (void) 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); diff --git a/lib/readline/text.c b/lib/readline/text.c index 81de2a99c..cddaeebd2 100644 --- a/lib/readline/text.c +++ b/lib/readline/text.c @@ -297,13 +297,40 @@ _rl_forward_char_internal (int 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); } diff --git a/lib/readline/vi_mode.c b/lib/readline/vi_mode.c index 3cb7e8c99..d6fa38e97 100644 --- a/lib/readline/vi_mode.c +++ b/lib/readline/vi_mode.c @@ -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-2017 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. @@ -63,6 +63,19 @@ #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 */ @@ -118,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)); @@ -126,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)); @@ -383,7 +399,7 @@ rl_vi_complete (int ignore, int key) { if (!whitespace (rl_line_buffer[rl_point + 1])) rl_vi_end_word (1, 'E'); - rl_point++; + _rl_vi_advance_point (); } if (key == '*') @@ -451,6 +467,69 @@ rl_vi_next_word (int count, int 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 (int count, int key) @@ -476,11 +555,11 @@ rl_vi_fWord (int count, int ignore) { /* 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); } @@ -497,12 +576,18 @@ rl_vi_bWord (int count, int 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); @@ -511,28 +596,32 @@ rl_vi_bWord (int count, int ignore) int 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); @@ -541,24 +630,28 @@ rl_vi_eWord (int count, int ignore) int 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); } @@ -566,9 +659,11 @@ rl_vi_fword (int count, int ignore) int 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. */ @@ -581,22 +676,35 @@ rl_vi_bword (int count, int ignore) 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); @@ -605,23 +713,34 @@ rl_vi_bword (int count, int ignore) int 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); } @@ -637,20 +756,7 @@ rl_vi_insert_beg (int count, int key) static void _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; - rl_point = _rl_forward_char_internal (1); - if (point == rl_point) - rl_point = rl_end; - } - } + _rl_vi_advance_point (); } int @@ -859,7 +965,7 @@ _rl_vi_change_mbchar_case (int 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 (); @@ -931,27 +1037,12 @@ rl_vi_put (int count, int key) return (0); } -/* Move the cursor back one character. */ -static 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 cursor back one character if you're at the end of the line */ int 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); } @@ -962,7 +1053,10 @@ 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); } @@ -1113,7 +1207,7 @@ _rl_vi_domove_motion_cleanup (int c, _rl_vimotion_cxt *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. */ @@ -1126,14 +1220,14 @@ _rl_vi_domove_motion_cleanup (int c, _rl_vimotion_cxt *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 (); } } @@ -1271,7 +1365,7 @@ vi_delete_dispatch (_rl_vimotion_cxt *m) 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); @@ -1334,7 +1428,7 @@ vi_change_dispatch (_rl_vimotion_cxt *m) 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) @@ -1421,7 +1515,7 @@ vi_yank_dispatch (_rl_vimotion_cxt *m) 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); @@ -1611,8 +1705,8 @@ rl_vi_unix_word_rubout (int count, int 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); @@ -2100,7 +2194,7 @@ rl_vi_possible_completions (void) { 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] == ';') { diff --git a/lib/sh/Makefile.in b/lib/sh/Makefile.in index b1a086d6f..06917ba4e 100644 --- a/lib/sh/Makefile.in +++ b/lib/sh/Makefile.in @@ -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 diff --git a/lib/sh/getenv.c b/lib/sh/getenv.c index 8b5e34060..1e682aefb 100644 --- a/lib/sh/getenv.c +++ b/lib/sh/getenv.c @@ -69,7 +69,7 @@ getenv (name) if (var && exported_p (var)) return (value_cell (var)); } - else + else if (environ) { register int i, len; diff --git a/lib/sh/mbschr.c b/lib/sh/mbschr.c index fdce6d5a1..639962d46 100644 --- a/lib/sh/mbschr.c +++ b/lib/sh/mbschr.c @@ -32,13 +32,7 @@ extern int locale_utf8locale; #undef mbschr -static inline char * -utf8_mbschr (s, c) - const char *s; - int c; -{ - return strchr (s, c); /* for now */ -} +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 diff --git a/lib/sh/mbscmp.c b/lib/sh/mbscmp.c index aaf81f5e5..c7c844357 100644 --- a/lib/sh/mbscmp.c +++ b/lib/sh/mbscmp.c @@ -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. @@ -26,6 +26,10 @@ #include #include +extern int locale_utf8locale; + +extern int utf8_mbscmp (const char *, const char *); + /* Compare MBS1 and MBS2. */ int mbscmp (mbs1, mbs2) diff --git a/lib/sh/shmbchar.c b/lib/sh/shmbchar.c index 80858ebf2..f2f2582b4 100644 --- a/lib/sh/shmbchar.c +++ b/lib/sh/shmbchar.c @@ -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 @@ -45,102 +45,9 @@ const unsigned int is_basic_table [UCHAR_MAX / 32 + 1] = extern int locale_utf8locale; -/* We can optimize this if we know the locale is UTF-8, but needs to handle - malformed byte sequences. */ -static inline size_t -utf8_mbstrlen(s) - const char *s; -{ - size_t num = 0; - register unsigned char c; - - while ((c = *s++)) - /* bytes 0xc0 through 0xff are first byte of multi-byte sequence */ - if ((c & 0xc0) != 0x80) /* skip continuation bytes */ - ++num; - return (num); -} - -/* Adapted from GNU libutf8 */ -static inline int -utf8_mblen (s, n) - const char *s; - int n; -{ - unsigned char c; - - if (s == 0) - return 0; - else if (n == 0) - return -1; - - c = (unsigned char) *s; - if (c < 0x80) - return (c != 0); - else if (c < 0xc0) - goto return_error; - else - { - const char *start = s; - size_t count; - int check_unsafe; +extern char *utf8_mbsmbchar (const char *); +extern int utf8_mblen (const char *, size_t); - if (c < 0xe0) - { - count = 1; - if (c < 0xc2) - goto return_error; - check_unsafe = 0; - } - else if (c < 0xf0) - { - count = 2; - check_unsafe = (c == 0xe0); - } -#if SIZEOF_WCHAR_T == 4 - else if (c < 0xf8) - { - count = 3; - check_unsafe = (c == 0xe0); - } - else if (c < 0xfc) - { - count = 4; - check_unsafe = (c == 0xf8); - } - else if (c < 0xfe) - { - count = 5; - check_unsafe = (c == 0xfc); - } -#endif - else - goto return_error; - if (n <= count) - return -1; - s++; - c = (unsigned char) *s++ ^ 0x80; - if (c >= 0x40) - goto return_error; - if (--count > 0) - { - if (check_unsafe && ((c >> (6 - count)) == 0)) - goto return_error; - do - { - c = (unsigned char) *s++ ^ 0x80; - if (c >= 0x40) - goto return_error; - } - while (--count > 0); - } - return s - start; - } -return_error: - errno = EILSEQ; - return -1; -} - /* Count the number of characters in S, counting multi-byte characters as a single character. */ size_t @@ -170,18 +77,6 @@ mbstrlen (s) return nc; } -static inline char * -utf8_mbsmbchar (str) - const char *str; -{ - register char *s; - - for (s = (char *)str; *s; s++) - if ((*s & 0xc0) == 0x80) - return s; - return (0); -} - /* 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 */ @@ -219,22 +114,6 @@ mbsmbchar (s) return 0; } -static inline int -utf_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); -} - int sh_mbsnlen(src, srclen, maxlen) const char *src; diff --git a/lib/sh/snprintf.c b/lib/sh/snprintf.c index 87ca2173c..6e5892ee7 100644 --- a/lib/sh/snprintf.c +++ b/lib/sh/snprintf.c @@ -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 /* # */ diff --git a/lib/sh/utf8.c b/lib/sh/utf8.c new file mode 100644 index 000000000..d27fcf545 --- /dev/null +++ b/lib/sh/utf8.c @@ -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 . +*/ + +#include + +#ifdef HAVE_STDLIB_H +# include +#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 diff --git a/locale.c b/locale.c index c42046bb8..d62547f64 100644 --- a/locale.c +++ b/locale.c @@ -43,7 +43,7 @@ extern int errno; #endif -int locale_utf8locale; /* set but unused for now */ +int locale_utf8locale; int locale_mb_cur_max; /* value of MB_CUR_MAX for current locale (LC_CTYPE) */ int locale_shiftstates; diff --git a/nojobs.c b/nojobs.c index 472624b92..2201a29ac 100644 --- a/nojobs.c +++ b/nojobs.c @@ -1037,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 6457782ba..0eb641305 100644 --- a/parse.y +++ b/parse.y @@ -2414,20 +2414,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) { @@ -3167,6 +3168,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 diff --git a/parser-built b/parser-built index 6efd73716..d5b5c0994 100644 --- a/parser-built +++ b/parser-built @@ -148,7 +148,7 @@ extern int yydebug; union YYSTYPE { -#line 328 "/usr/homes/chet/src/bash/src/parse.y" /* yacc.c:1909 */ +#line 328 "./parse.y" /* yacc.c:1909 */ WORD_DESC *word; /* the word that we read. */ int number; /* the number that we read. */ diff --git a/pcomplete.c b/pcomplete.c index 7a5f102f5..8f0b48083 100644 --- a/pcomplete.c +++ b/pcomplete.c @@ -151,7 +151,7 @@ static int progcomp_debug = 0; int prog_completion_enabled = 1; -#ifdef ALIAS +#ifdef ALIAS /* bash-5.0-beta */ int progcomp_alias = 0; /* unavailable to user code for now */ #endif @@ -1688,7 +1688,7 @@ programmable_completions (cmd, word, start, end, foundp) /* 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); /*)*/ + ind = skip_to_delim (ntxt, 0, "()<>;&| \t\n", SD_NOJMP|SD_COMPLETE); if (ind > 0) ncmd = substring (ntxt, 0, ind); else diff --git a/pcomplete.h b/pcomplete.h index 2ae8224eb..38932ac2f 100644 --- a/pcomplete.h +++ b/pcomplete.h @@ -107,6 +107,7 @@ typedef struct _list_of_items { #define EMPTYCMD "_EmptycmD_" #define DEFAULTCMD "_DefaultCmD_" +#define INITIALWORD "_InitialWorD_" extern HASH_TABLE *prog_completes; diff --git a/po/Makefile.in.in b/po/Makefile.in.in index 673066533..5217a12ef 100644 --- a/po/Makefile.in.in +++ b/po/Makefile.in.in @@ -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;" diff --git a/po/bash.pot b/po/bash.pot index c6953b85b..e0ab2c751 100644 --- a/po/bash.pot +++ b/po/bash.pot @@ -8,10 +8,11 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"POT-Creation-Date: 2018-09-07 16:16-0400\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" @@ -21,52 +22,52 @@ msgstr "" msgid "bad array subscript" msgstr "" -#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 -#: variables.c:2922 +#: arrayfunc.c:375 builtins/declare.def:638 variables.c:2230 variables.c:2256 +#: variables.c:3072 #, c-format msgid "%s: removing nameref attribute" msgstr "" -#: arrayfunc.c:398 builtins/declare.def:831 +#: arrayfunc.c:400 builtins/declare.def:851 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "" -#: arrayfunc.c:582 +#: arrayfunc.c:584 #, c-format msgid "%s: invalid associative array key" msgstr "" -#: arrayfunc.c:584 +#: arrayfunc.c:586 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "" -#: arrayfunc.c:629 +#: arrayfunc.c:631 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "" -#: bashhist.c:436 +#: bashhist.c:451 #, c-format msgid "%s: cannot create: %s" msgstr "" -#: bashline.c:4111 +#: bashline.c:4120 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "" -#: bashline.c:4221 +#: bashline.c:4230 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "" -#: bashline.c:4250 +#: bashline.c:4259 #, c-format msgid "no closing `%c' in %s" msgstr "" -#: bashline.c:4284 +#: bashline.c:4293 #, c-format msgid "%s: missing colon separator" msgstr "" @@ -86,7 +87,7 @@ msgstr "" msgid "brace expansion: failed to allocate memory for `%s'" msgstr "" -#: builtins/alias.def:131 +#: builtins/alias.def:131 variables.c:1818 #, c-format msgid "`%s': invalid alias name" msgstr "" @@ -144,7 +145,7 @@ msgstr "" msgid "HOME not set" msgstr "" -#: builtins/cd.def:327 builtins/common.c:161 test.c:889 +#: builtins/cd.def:327 builtins/common.c:161 test.c:891 msgid "too many arguments" msgstr "" @@ -196,7 +197,7 @@ msgstr "" msgid "%s: invalid option name" msgstr "" -#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 +#: builtins/common.c:230 execute_cmd.c:2358 general.c:294 general.c:299 #, c-format msgid "`%s': not a valid identifier" msgstr "" @@ -299,26 +300,26 @@ msgstr "" 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:653 -#: builtins/complete.def:874 +#: builtins/complete.def:474 builtins/complete.def:679 +#: builtins/complete.def:910 #, c-format msgid "%s: no completion specification" msgstr "" -#: builtins/complete.def:707 +#: builtins/complete.def:733 msgid "warning: -F option may not work as you expect" msgstr "" -#: builtins/complete.def:709 +#: builtins/complete.def:735 msgid "warning: -C option may not work as you expect" msgstr "" -#: builtins/complete.def:847 +#: builtins/complete.def:883 msgid "not currently executing completion function" msgstr "" @@ -326,47 +327,47 @@ msgstr "" msgid "can only be used in a function" msgstr "" -#: builtins/declare.def:369 builtins/declare.def:736 +#: builtins/declare.def:369 builtins/declare.def:756 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:380 variables.c:3161 +#: builtins/declare.def:380 variables.c:3322 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 -#: variables.c:3158 +#: builtins/declare.def:385 variables.c:2060 variables.c:3233 variables.c:3245 +#: variables.c:3319 #, c-format msgid "%s: circular name reference" msgstr "" -#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#: 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:500 +#: builtins/declare.def:520 msgid "cannot use `-f' to make functions" msgstr "" -#: builtins/declare.def:512 execute_cmd.c:5797 +#: builtins/declare.def:532 execute_cmd.c:5823 #, c-format msgid "%s: readonly function" msgstr "" -#: builtins/declare.def:804 +#: builtins/declare.def:824 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:818 +#: builtins/declare.def:838 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "" -#: builtins/declare.def:825 builtins/read.def:784 +#: builtins/declare.def:845 builtins/read.def:785 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "" @@ -400,7 +401,7 @@ msgstr "" msgid "%s: cannot delete: %s" msgstr "" -#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 +#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5655 #, c-format msgid "%s: is a directory" msgstr "" @@ -728,7 +729,7 @@ msgstr "" msgid "%s: invalid timeout specification" msgstr "" -#: builtins/read.def:729 +#: builtins/read.def:730 #, c-format msgid "read error: %d: %s" msgstr "" @@ -746,7 +747,7 @@ msgstr "" msgid "%s: cannot unset" msgstr "" -#: builtins/set.def:902 variables.c:3597 +#: builtins/set.def:902 variables.c:3764 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "" @@ -770,11 +771,11 @@ msgstr "" msgid "shift count" msgstr "" -#: builtins/shopt.def:301 +#: builtins/shopt.def:312 msgid "cannot set and unset shell options simultaneously" msgstr "" -#: builtins/shopt.def:403 +#: builtins/shopt.def:422 #, c-format msgid "%s: invalid shell option name" msgstr "" @@ -910,7 +911,7 @@ msgstr "" msgid "%s: unbound variable" msgstr "" -#: eval.c:242 +#: eval.c:245 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "" @@ -920,66 +921,66 @@ msgstr "" msgid "cannot redirect standard input from /dev/null: %s" msgstr "" -#: execute_cmd.c:1294 +#: execute_cmd.c:1304 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "" -#: execute_cmd.c:2330 +#: execute_cmd.c:2346 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2456 +#: execute_cmd.c:2472 msgid "pipe error" msgstr "" -#: execute_cmd.c:4624 +#: execute_cmd.c:4644 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4636 +#: execute_cmd.c:4656 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:4742 +#: execute_cmd.c:4762 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "" -#: execute_cmd.c:5285 +#: execute_cmd.c:5311 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "" -#: execute_cmd.c:5383 +#: execute_cmd.c:5409 #, c-format msgid "%s: command not found" msgstr "" -#: execute_cmd.c:5627 +#: execute_cmd.c:5653 #, c-format msgid "%s: %s" msgstr "" -#: execute_cmd.c:5665 +#: execute_cmd.c:5691 #, c-format msgid "%s: %s: bad interpreter" msgstr "" -#: execute_cmd.c:5702 +#: execute_cmd.c:5728 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "" -#: execute_cmd.c:5788 +#: execute_cmd.c:5814 #, c-format msgid "`%s': is a special builtin" msgstr "" -#: execute_cmd.c:5840 +#: execute_cmd.c:5866 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "" @@ -1058,7 +1059,7 @@ msgstr "" msgid "getcwd: cannot access parent directories" msgstr "" -#: input.c:99 subst.c:5858 +#: input.c:99 subst.c:5867 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "" @@ -1222,51 +1223,51 @@ msgstr "" msgid "no job control in this shell" msgstr "" -#: lib/malloc/malloc.c:306 +#: lib/malloc/malloc.c:331 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "" -#: lib/malloc/malloc.c:322 +#: lib/malloc/malloc.c:347 #, c-format msgid "" "\r\n" "malloc: %s:%d: assertion botched\r\n" msgstr "" -#: lib/malloc/malloc.c:323 +#: lib/malloc/malloc.c:348 msgid "unknown" msgstr "" -#: lib/malloc/malloc.c:811 +#: lib/malloc/malloc.c:855 msgid "malloc: block on free list clobbered" msgstr "" -#: lib/malloc/malloc.c:888 +#: lib/malloc/malloc.c:932 msgid "free: called with already freed block argument" msgstr "" -#: lib/malloc/malloc.c:891 +#: lib/malloc/malloc.c:935 msgid "free: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:910 +#: lib/malloc/malloc.c:954 msgid "free: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:916 +#: lib/malloc/malloc.c:960 msgid "free: start and end chunk sizes differ" msgstr "" -#: lib/malloc/malloc.c:1015 +#: lib/malloc/malloc.c:1070 msgid "realloc: called with unallocated block argument" msgstr "" -#: lib/malloc/malloc.c:1030 +#: lib/malloc/malloc.c:1085 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "" -#: lib/malloc/malloc.c:1036 +#: lib/malloc/malloc.c:1091 msgid "realloc: start and end chunk sizes differ" msgstr "" @@ -1376,103 +1377,103 @@ msgid "" "truncated" msgstr "" -#: parse.y:2772 +#: parse.y:2773 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3511 parse.y:3881 +#: parse.y:3519 parse.y:3889 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "" -#: parse.y:4581 +#: parse.y:4589 msgid "unexpected EOF while looking for `]]'" msgstr "" -#: parse.y:4586 +#: parse.y:4594 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "" -#: parse.y:4590 +#: parse.y:4598 msgid "syntax error in conditional expression" msgstr "" -#: parse.y:4668 +#: parse.y:4676 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "" -#: parse.y:4672 +#: parse.y:4680 msgid "expected `)'" msgstr "" -#: parse.y:4700 +#: parse.y:4708 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4704 +#: parse.y:4712 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4750 +#: parse.y:4758 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4754 +#: parse.y:4762 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4776 +#: parse.y:4784 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4780 +#: parse.y:4788 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4791 +#: parse.y:4799 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4794 +#: parse.y:4802 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4798 +#: parse.y:4806 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:6220 +#: parse.y:6228 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "" -#: parse.y:6238 +#: parse.y:6246 #, c-format msgid "syntax error near `%s'" msgstr "" -#: parse.y:6248 +#: parse.y:6256 msgid "syntax error: unexpected end of file" msgstr "" -#: parse.y:6248 +#: parse.y:6256 msgid "syntax error" msgstr "" -#: parse.y:6310 +#: parse.y:6318 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "" -#: parse.y:6472 +#: parse.y:6480 msgid "unexpected EOF while looking for matching `)'" msgstr "" @@ -1548,7 +1549,7 @@ msgstr "" msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "" -#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 +#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1214 msgid "redirection error: cannot duplicate fd" msgstr "" @@ -1646,7 +1647,7 @@ msgstr "" msgid "General help using GNU software: \n" msgstr "" -#: sig.c:695 +#: sig.c:727 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "" @@ -1820,107 +1821,107 @@ msgstr "" msgid "Unknown Signal #%d" msgstr "" -#: subst.c:1450 subst.c:1641 +#: subst.c:1453 subst.c:1644 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "" -#: subst.c:3209 +#: subst.c:3216 #, c-format msgid "%s: cannot assign list to array member" msgstr "" -#: subst.c:5734 subst.c:5750 +#: subst.c:5743 subst.c:5759 msgid "cannot make pipe for process substitution" msgstr "" -#: subst.c:5796 +#: subst.c:5805 msgid "cannot make child for process substitution" msgstr "" -#: subst.c:5848 +#: subst.c:5857 #, c-format msgid "cannot open named pipe %s for reading" msgstr "" -#: subst.c:5850 +#: subst.c:5859 #, c-format msgid "cannot open named pipe %s for writing" msgstr "" -#: subst.c:5873 +#: subst.c:5882 #, c-format msgid "cannot duplicate named pipe %s as fd %d" msgstr "" -#: subst.c:5990 +#: subst.c:5999 msgid "command substitution: ignored null byte in input" msgstr "" -#: subst.c:6121 +#: subst.c:6127 msgid "cannot make pipe for command substitution" msgstr "" -#: subst.c:6164 +#: subst.c:6170 msgid "cannot make child for command substitution" msgstr "" -#: subst.c:6190 +#: subst.c:6196 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "" -#: subst.c:6641 subst.c:9483 +#: subst.c:6647 subst.c:9515 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6737 subst.c:6755 subst.c:6903 +#: subst.c:6743 subst.c:6761 subst.c:6915 #, c-format msgid "%s: invalid indirect expansion" msgstr "" -#: subst.c:6771 subst.c:6910 +#: subst.c:6777 subst.c:6922 #, c-format msgid "%s: invalid variable name" msgstr "" -#: subst.c:6962 +#: subst.c:6974 #, c-format msgid "%s: parameter not set" msgstr "" -#: subst.c:6964 +#: subst.c:6976 #, c-format msgid "%s: parameter null or not set" msgstr "" -#: subst.c:7201 subst.c:7216 +#: subst.c:7213 subst.c:7228 #, c-format msgid "%s: substring expression < 0" msgstr "" -#: subst.c:8839 subst.c:8860 +#: subst.c:8871 subst.c:8892 #, c-format msgid "%s: bad substitution" msgstr "" -#: subst.c:8948 +#: subst.c:8980 #, c-format msgid "$%s: cannot assign in this way" msgstr "" -#: subst.c:9346 +#: subst.c:9378 msgid "" "future versions of the shell will force evaluation as an arithmetic " "substitution" msgstr "" -#: subst.c:9903 +#: subst.c:9937 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "" -#: subst.c:10907 +#: subst.c:10965 #, c-format msgid "no match: %s" msgstr "" @@ -1943,17 +1944,17 @@ msgstr "" msgid "`)' expected, found %s" msgstr "" -#: test.c:282 test.c:748 test.c:751 +#: test.c:282 test.c:750 test.c:753 #, c-format msgid "%s: unary operator expected" msgstr "" -#: test.c:469 test.c:791 +#: test.c:469 test.c:793 #, c-format msgid "%s: binary operator expected" msgstr "" -#: test.c:873 +#: test.c:875 msgid "missing `]'" msgstr "" @@ -1977,78 +1978,78 @@ msgstr "" msgid "trap_handler: bad signal %d" msgstr "" -#: variables.c:399 +#: variables.c:408 #, c-format msgid "error importing function definition for `%s'" msgstr "" -#: variables.c:801 +#: variables.c:817 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "" -#: variables.c:2512 +#: variables.c:2620 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2531 +#: variables.c:2639 #, c-format msgid "%s: variable may not be assigned value" msgstr "" -#: variables.c:3246 +#: variables.c:3407 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4149 +#: variables.c:4316 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4437 +#: variables.c:4652 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:4442 variables.c:4451 +#: variables.c:4657 variables.c:4666 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4457 +#: variables.c:4672 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4911 +#: variables.c:5167 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4924 +#: variables.c:5180 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4999 +#: variables.c:5260 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5862 +#: variables.c:6196 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "" -#: variables.c:5867 +#: variables.c:6201 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5912 +#: variables.c:6246 #, 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 @@ -2378,7 +2379,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 +2391,7 @@ msgid "" msgstr "" #: builtins.c:239 -msgid "compopt [-o|+o option] [-DE] [name ...]" +msgid "compopt [-o|+o option] [-DEI] [name ...]" msgstr "" #: builtins.c:242 @@ -2510,7 +2511,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 @@ -4031,8 +4032,8 @@ msgid "" "successive\n" " argument.\n" " \n" -" In addition to the standard format specifications described in printf" -"(1),\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" @@ -4071,16 +4072,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 intial (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:1985 +#: builtins.c:1987 msgid "" "Display possible completions depending on the options.\n" " \n" @@ -4093,7 +4098,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:2000 +#: builtins.c:2002 msgid "" "Modify or display completion options.\n" " \n" @@ -4108,6 +4113,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" @@ -4124,7 +4130,7 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2030 +#: builtins.c:2033 msgid "" "Read lines from the standard input into an indexed array variable.\n" " \n" @@ -4166,7 +4172,7 @@ msgid "" " not an indexed array." msgstr "" -#: builtins.c:2066 +#: builtins.c:2069 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/de.po b/po/de.po index b99200276..752238ec8 100644 --- a/po/de.po +++ b/po/de.po @@ -1,139 +1,135 @@ # German language file for GNU Bash 4.4 # Copyright (C) 2011 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Nils Naumann , 1996-2017. +# Nils Naumann , 1996-2018. msgid "" msgstr "" "Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-27 14:15-0400\n" -"PO-Revision-Date: 2017-06-11 12:12+0200\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2018-07-22 00:02+0200\n" "Last-Translator: Nils Naumann \n" "Language-Team: German \n" +"Language: de\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:58 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "Falscher Feldbezeichner." -#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 -#: variables.c:2922 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: Entferne das Nameref Attribut." -#: arrayfunc.c:398 builtins/declare.def:831 +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: Kann nicht das indizierte in ein assoziatives Array umwandeln." -#: arrayfunc.c:582 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: Ungültiger Schlüssel für das assoziative Array." -#: arrayfunc.c:584 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: Kann nicht auf einen nicht-numerischen Index zuweisen." -#: arrayfunc.c:629 +#: arrayfunc.c:625 #, 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." +msgstr "%s: %s: Ein Feldbezeicher wird zum Zuweisen eines assoziativen Arrays benötigt." -#: bashhist.c:436 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: Kann die Datei %s nicht erzeugen." -#: bashline.c:4111 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "" -"bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando " -"finden." +msgstr "bash_execute_unix_command: Kann nicht die Tastenzuordnung für das Kommando finden." -#: bashline.c:4221 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr " %s: Das erste Zeichen ist nicht `\\'." -#: bashline.c:4250 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "fehlende schließende `%c' in %s." -#: bashline.c:4284 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: Fehlender Doppelpunkt." -#: braces.c:331 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "Klammererweiterung: Konnte keinen Speicher für %s zuweisen." -#: braces.c:429 -#, fuzzy, c-format -msgid "brace expansion: failed to allocate memory for %u elements" +#: braces.c:427 +#, c-format +msgid "brace expansion: failed to allocate memory for %d elements" msgstr "Klammererweiterung: Konnte für %d Elemente keinen Speicher zuweisen." -#: braces.c:473 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "Klammererweiterung: Konnte keinen Speicher für `%s' zuweisen." -#: builtins/alias.def:131 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': Ungültiger Alias Name." -#: builtins/bind.def:122 builtins/bind.def:125 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "Zeileneditierung ist nicht aktiviert." -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': Ungültiger KEYMAP-Name." -#: builtins/bind.def:252 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: Nicht lesbar: %s" -#: builtins/bind.def:304 builtins/bind.def:334 +#: 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 #, c-format msgid "`%s': unknown function name" msgstr "%s: Unbekannter Funktionsname." -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s ist keiner Taste zugeordnet.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s kann aufgerufen werden durch " -#: 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 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "Schleifen Zähler" -#: builtins/break.def:139 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "nur in einer `for', `while' oder `until' Schleife sinnvoll." @@ -145,163 +141,163 @@ msgid "" " Without EXPR, returns " msgstr "" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME ist nicht zugewiesen." -#: builtins/cd.def:327 builtins/common.c:161 test.c:889 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "Zu viele Argumente." -#: builtins/cd.def:334 +#: builtins/cd.def:336 msgid "null directory" msgstr "NULL Verzeichnis" -#: builtins/cd.def:345 +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD ist nicht zugewiesen." # Debug Ausgabe -#: builtins/common.c:96 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "Zeile %d: " -#: builtins/common.c:134 error.c:264 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "Warnung: " -#: builtins/common.c:148 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: Aufruf: " -#: builtins/common.c:193 shell.c:510 shell.c:838 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: Die Option erfordert ein Argument." -#: builtins/common.c:200 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: Ein numerischer Parameter ist erforderlich." -#: builtins/common.c:207 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: Nicht gefunden." -#: builtins/common.c:216 shell.c:851 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: Ungültige Option" -#: builtins/common.c:223 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: Ungültiger Optionsname." -#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': Ist kein gültiger Bezeichner." -#: builtins/common.c:240 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "Ungültige Oktalzahl." -#: builtins/common.c:242 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "Ungültige hexadezimale Zahl." -#: builtins/common.c:244 expr.c:1538 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "Ungültige Zahl." -#: builtins/common.c:252 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: Ungültige Signalbezeichnung." -#: builtins/common.c:259 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "`%s': Ist keine gültige Prozess- oder Jobbezeichnung." -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: Schreibgeschützte Variable." -#: builtins/common.c:274 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s ist außerhalb des Gültigkeitsbereiches." -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "Argument" -#: builtins/common.c:276 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s ist außerhalb des Gültigkeitsbereiches." -#: builtins/common.c:284 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: Kein solcher Job." -#: builtins/common.c:292 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: Keine Job Steuerung in dieser Shell." -#: builtins/common.c:294 +#: builtins/common.c:300 msgid "no job control" msgstr "Keine Job Steuerung in dieser Shell." -#: builtins/common.c:304 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: gesperrt" -#: builtins/common.c:306 +#: builtins/common.c:312 msgid "restricted" msgstr "gesperrt" -#: builtins/common.c:314 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: Ist kein Shell Kommando." -#: builtins/common.c:323 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "Schreibfehler: %s." -#: builtins/common.c:331 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "Fehler beim Setzen der Terminalattribute: %s" -#: builtins/common.c:333 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "Fehler beim Ermitteln der Terminalattribute: %s" -#: builtins/common.c:579 +#: builtins/common.c:585 #, 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:645 builtins/common.c:647 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: Mehrdeutige Job Bezeichnung." -#: builtins/common.c:908 +#: builtins/common.c:918 msgid "help not available in this version" msgstr "In dieser Version ist keine Hilfe verfügbar." @@ -310,73 +306,72 @@ msgstr "In dieser Version ist keine Hilfe verfügbar." msgid "%s: invalid action name" msgstr "%s: Ungültige Methode." -#: builtins/complete.def:452 builtins/complete.def:653 -#: builtins/complete.def:874 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: Keine Komplettierung angegeben." -#: builtins/complete.def:707 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "Warnung: Die -F Option könnte unerwartete Ergebnisse liefern." -#: builtins/complete.def:709 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "Warnung: Die -C Option könnte unerwartete Ergebnisse liefern." -#: builtins/complete.def:847 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "Gegenwärtig wird keine Komplettierungsfunktion ausgeführt." -#: builtins/declare.def:132 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "kann nur innerhalb einer Funktion benutzt werden." -#: builtins/declare.def:369 builtins/declare.def:736 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "" -#: builtins/declare.def:380 variables.c:3161 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "" -#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 -#: variables.c:3158 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 #, c-format msgid "%s: circular name reference" msgstr "%s: Zirkularbezug auf indirekte Variable." -#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "`%s': Ungültiger Name für indirekte Variablenreferenz." -#: builtins/declare.def:500 +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "Mit `-f' können keine Funktionen erzeugt werden." -#: builtins/declare.def:512 execute_cmd.c:5797 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: Schreibgeschützte Funktion." -#: builtins/declare.def:804 +#: builtins/declare.def:753 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "" -#: builtins/declare.def:818 +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: Kann Feldvariablen nicht auf diese Art löschen." -#: builtins/declare.def:825 builtins/read.def:784 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "" -"%s: Konvertieren von assoziativen in indizierte Arrays ist nicht möglich." +msgstr "%s: Konvertieren von assoziativen in indizierte Arrays ist nicht möglich." #: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" @@ -407,68 +402,68 @@ msgstr "%s: Ist nicht dynamisch geladen." msgid "%s: cannot delete: %s" msgstr "%s: Kann nicht löschen: %s" -#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: ist ein Verzeichnis." -#: builtins/evalfile.c:144 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: Ist keine normale Datei." -#: builtins/evalfile.c:153 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: Die Datei ist zu groß." -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: Kann die Datei nicht ausführen." -#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: Kann nicht ausführen: %s" -#: builtins/exit.def:64 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "Abgemeldet\n" -#: builtins/exit.def:89 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "Keine Login Shell: Mit `exit' abmelden!" -#: builtins/exit.def:121 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Es gibt noch angehaltene Prozesse.\n" -#: builtins/exit.def:123 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Es gibt noch laufende Prozesse.\n" -#: builtins/fc.def:265 +#: builtins/fc.def:269 msgid "no command found" msgstr "Kein Kommando gefunden." -#: builtins/fc.def:323 builtins/fc.def:372 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "" -#: builtins/fc.def:393 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: Kann die tempräre Datei nicht öffnen: %s" -#: builtins/fg_bg.def:152 builtins/jobs.def:284 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "gegenwärtig" -#: builtins/fg_bg.def:161 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "Job %d wurde ohne Jobsteuerung gestartet." @@ -483,40 +478,38 @@ 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:91 +#: builtins/hash.def:92 msgid "hashing disabled" msgstr "Hashing deaktiviert." -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: Die Hashtabelle ist leer.\n" -#: builtins/hash.def:266 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "Treffer\tBefehl\n" -#: builtins/help.def:133 +#: builtins/help.def:135 +#, c-format 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:185 +#: builtins/help.def:187 #, c-format -msgid "" -"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"Auf `%s' trifft kein Hilfethema zu. Probieren Sie `help help', `man -k %s' " -"oder `info %s'." +msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "Auf `%s' trifft kein Hilfethema zu. Probieren Sie `help help', `man -k %s' oder `info %s'." -#: builtins/help.def:224 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: Kann die Datei nicht öffnen: %s" -#: builtins/help.def:524 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -536,21 +529,20 @@ msgstr "" "Ein Stern (*) neben dem Namen kennzeichnet deaktivierte Kommandos.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 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:197 builtins/history.def:212 -#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 +#: builtins/history.def:187 msgid "history position" msgstr "Kommandostapelposition." -#: builtins/history.def:331 +#: builtins/history.def:264 #, c-format msgid "%s: invalid timestamp" msgstr "%s: Ungültiger Zeitstempel." -#: builtins/history.def:442 +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: Kommandoersetzung gescheitert." @@ -564,16 +556,16 @@ msgstr "%s: inlib gescheitert." msgid "no other options allowed with `-x'" msgstr "Keine weiteren Optionen mit `-x' erlaubt." -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: Die Argumente müssen Prozess- oder Jobbezeichnungen sein." -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Unbekannter Fehler." -#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "Ausdruck erwartet." @@ -582,69 +574,69 @@ msgstr "Ausdruck erwartet." msgid "%s: not an indexed array" msgstr "%s: Ist kein indiziertes Array." -#: builtins/mapfile.def:271 builtins/read.def:305 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: Ungültige Datei-Deskriptor Angabe." -#: builtins/mapfile.def:279 builtins/read.def:312 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: Ungültiger Datei-Deskriptor: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: Ungültige Zeilenanzahlangabe." -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: Ungültiger Zeilenindex für den Array Beginn." -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "Fehlender Name für die Array Variable." -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "Die Array Variablen Unterstützung ist in dieser Shell nicht vorhanden." -#: builtins/printf.def:416 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "`%s': Fehlendes Formatierungszeichen." -#: builtins/printf.def:471 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': Ungültige Zeitformatangabe." -#: builtins/printf.def:673 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "`%c': Ungültiges Formatierungszeichen." -#: builtins/printf.def:699 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "Warnung: %s: %s" -#: builtins/printf.def:785 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "Formatleseproblem: %s" -#: builtins/printf.def:882 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "Fehlende hexadezimale Ziffer nach \\x." -#: builtins/printf.def:897 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "Fehlendes Unicode Zeichen für \\%c." @@ -658,19 +650,19 @@ msgstr "kein anderes Verzeichnis" msgid "%s: invalid argument" msgstr "%s: Ungültiges Argument." -#: builtins/pushd.def:480 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:524 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "Der Verzeichnisstapel ist leer." -#: builtins/pushd.def:526 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "Verzeichnisstapelindex" -#: builtins/pushd.def:701 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -685,12 +677,10 @@ msgid "" " \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" +" +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" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Zeigt die Liste der gegenwärtig gespeicherten Verzeichnisse an. Durch\n" @@ -712,7 +702,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:723 +#: builtins/pushd.def:718 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 +748,7 @@ msgstr "" " \n" " Das `dirs' Kommando zeigt den Verueichnisstapel an." -#: builtins/pushd.def:748 +#: builtins/pushd.def:743 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,48 +789,45 @@ msgstr "" " \n" " Das `dirs' Kommando zeigt den Verzeichnisstapel an." -#: builtins/read.def:277 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: Ungültige Wartezeitangebe." -#: builtins/read.def:729 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "Lesefehler: %d: %s" -#: builtins/return.def:68 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" -msgstr "" -"»Return« ist nur aus einer Funktion oder einem mit »source« ausgeführten " -"Skript möglich." +msgstr "»Return« ist nur aus einer Funktion oder einem mit »source« ausgeführten Skript möglich." -#: builtins/set.def:834 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" -msgstr "" -"Gleichzeitiges `unset' einer Funktion und einer Variable ist nicht möglich." +msgstr "Gleichzeitiges `unset' einer Funktion und einer Variable ist nicht möglich." -#: builtins/set.def:881 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: `unset' nicht möglich." -#: builtins/set.def:902 variables.c:3597 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: `unset' nicht möglich: Schreibgeschützt %s" -#: builtins/set.def:915 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: Ist keine Feldvariable." -#: builtins/setattr.def:189 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: Ist keine Funktion." -#: builtins/setattr.def:194 +#: builtins/setattr.def:196 #, c-format msgid "%s: cannot export" msgstr "%s: exportieren nicht möglich." @@ -849,20 +836,20 @@ msgstr "%s: exportieren nicht möglich." msgid "shift count" msgstr "Verschiebezähler" -#: builtins/shopt.def:301 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "Kann nicht Shell Optinen gleichzeitig aktivieren und deaktivieren." -#: builtins/shopt.def:403 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: Ungültiger Shell Optionen Name." -#: builtins/source.def:128 +#: builtins/source.def:131 msgid "filename argument required" -msgstr "Ein Dateiname wird as Argument benötigt." +msgstr "Ein Dateiname wird als Argument benötigt." -#: builtins/source.def:154 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: Datei nicht gefunden." @@ -876,61 +863,61 @@ msgstr "Kann die Shell nicht unterbrechen." msgid "cannot suspend a login shell" msgstr "Kann die Loginshell nicht unterbrechen." -#: builtins/type.def:235 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s ist ein Alias von `%s'.\n" -#: builtins/type.def:256 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s Ist ein reserviertes Schlüsselwort der Shell.\n" -#: builtins/type.def:275 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s ist eine Funktion.\n" -#: builtins/type.def:299 +#: builtins/type.def:300 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s ist eine spezielle eingebaute Funktion.\n" -#: builtins/type.def:301 +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s ist eine von der Shell mitgelieferte Funktion.\n" -#: builtins/type.def:323 builtins/type.def:408 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s ist %s\n" -#: builtins/type.def:343 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "" -#: builtins/ulimit.def:396 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: Ungültiges Grenzwertargument." -#: builtins/ulimit.def:422 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': Falsches Kommando." -#: builtins/ulimit.def:451 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: Kann die nicht Grenze setzen: %s" -#: builtins/ulimit.def:477 +#: builtins/ulimit.def:479 msgid "limit" msgstr "Grenze" -#: builtins/ulimit.def:489 builtins/ulimit.def:789 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: Kann die Grenze nicht ändern: %s" @@ -949,210 +936,204 @@ 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:89 error.c:347 error.c:349 error.c:351 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " Zeile " -#: error.c:164 +#: error.c:165 #, c-format msgid "last command: %s\n" msgstr "Letztes Kommando: %s\n" -#: error.c:172 +#: error.c:173 #, c-format msgid "Aborting..." msgstr "Abbruch..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:287 +#: error.c:288 #, c-format msgid "INFORM: " msgstr "INFO: " -#: error.c:462 +#: error.c:463 msgid "unknown command error" msgstr "Unbekanntes Kommando" -#: error.c:463 +#: error.c:464 msgid "bad command type" msgstr "" # Programmierfehler -#: error.c:464 +#: error.c:465 msgid "bad connector" msgstr "" -#: error.c:465 +#: error.c:466 msgid "bad jump" msgstr "Falscher Sprung" -#: error.c:503 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s ist nicht gesetzt." -#: eval.c:242 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aZu lange keine Eingabe: Automatisch ausgeloggt.\n" -#: execute_cmd.c:536 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "Kann nicht die Standardeingabe von /dev/null umleiten: %s" -#: execute_cmd.c:1294 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': Ungültiges Formatzeichen." -#: execute_cmd.c:2330 +#: execute_cmd.c:2273 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "" -#: execute_cmd.c:2456 +#: execute_cmd.c:2377 msgid "pipe error" msgstr "Pipe-Fehler" -#: execute_cmd.c:4624 +#: execute_cmd.c:4496 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: Maximale Schachtelungstiefe überschritten (%d)" -#: execute_cmd.c:4636 +#: execute_cmd.c:4508 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: Maximale Quellcode Schachtelungstiefe überschritten (%d)" -#: execute_cmd.c:4742 +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: maximale Funkrionsschachtelungstiefe überschritten (%d)" -#: execute_cmd.c:5285 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: Verboten: `/' ist in Kommandonamen unzulässig." -#: execute_cmd.c:5383 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: Kommando nicht gefunden." -#: execute_cmd.c:5627 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5665 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: Defekter Interpreter" -#: execute_cmd.c:5702 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: Kann die Binärdatei nicht ausführen: %s" -#: execute_cmd.c:5788 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "`%s' ist eine spezielle eingebaute Funktion." -#: execute_cmd.c:5840 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "Kann fd %d nicht auf fd %d verdoppeln." -#: expr.c:263 +#: expr.c:259 msgid "expression recursion level exceeded" msgstr "Zu viele Rekursionen in Ausdruck." -#: expr.c:291 +#: expr.c:283 msgid "recursion stack underflow" msgstr "Rekursionsstapel leer." -#: expr.c:453 +#: expr.c:431 msgid "syntax error in expression" msgstr "Syntaxfehler im Ausdruck." -#: expr.c:497 +#: expr.c:475 msgid "attempted assignment to non-variable" msgstr "Versuchte Zuweisung zu keiner Variablen." -#: expr.c:506 -#, fuzzy -msgid "syntax error in variable assignment" -msgstr "Syntaxfehler im Ausdruck." - -#: expr.c:520 expr.c:886 +#: expr.c:495 expr.c:858 msgid "division by 0" msgstr "Division durch 0." -#: expr.c:567 +#: expr.c:542 msgid "bug: bad expassign token" msgstr "Fehler: Falscher Zuweisungsoperator." -#: expr.c:621 +#: expr.c:595 msgid "`:' expected for conditional expression" msgstr "`:' für ein bedingten Ausdruck erwaret." -#: expr.c:947 +#: expr.c:919 msgid "exponent less than 0" msgstr "Der Exponent ist kleiner als 0." -#: expr.c:1004 +#: expr.c:976 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "" -"Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet." +msgstr "Nach einem Präinkrement oder Prädekrement wird ein Bezeichner erwartet." -#: expr.c:1030 +#: expr.c:1002 msgid "missing `)'" msgstr "Fehlende `)'" -#: expr.c:1081 expr.c:1458 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "Syntax Fehler: Operator erwartet." -#: expr.c:1460 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "Syntaxfehler: Ungültiger arithmetischer Operator." -#: expr.c:1484 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (Fehlerverursachendes Zeichen ist \\\"%s\\\")." -#: expr.c:1542 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "Ungültige Basis." -#: expr.c:1562 +#: expr.c:1497 msgid "value too great for base" msgstr "Der Wert ist für die aktuelle Basis zu groß." -#: expr.c:1611 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: Fehler im Ausdruck.\n" -#: general.c:69 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getwd: Kann auf das übergeordnete Verzeichnis nicht zugreifen." -#: input.c:99 subst.c:5858 +#: input.c:102 subst.c:5858 #, 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:266 +#: input.c:271 #, 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:274 +#: input.c:279 #, 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." @@ -1161,165 +1142,159 @@ msgstr "save_bash_input: Es existiert bereits ein Puffer für den neuen fd %d." msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1080 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Die geforkte PID %d erscheint im laufenden Prozess %d." -#: jobs.c:1199 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "Lösche den gestoppten Prozess %d der Prozessgruppe %ld." -#: jobs.c:1303 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "" -#: jobs.c:1306 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "" # Programmierfehler -#: jobs.c:1635 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: Prozessnummer existiert nicht." -#: jobs.c:1650 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1664 jobs.c:1690 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Fertig" -#: jobs.c:1669 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Angehalten" -#: jobs.c:1673 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Angehalten(%s)" -#: jobs.c:1677 +#: jobs.c:1632 msgid "Running" msgstr "Läuft" -#: jobs.c:1694 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Fertig(%d)" -#: jobs.c:1696 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Exit %d" -#: jobs.c:1699 +#: jobs.c:1654 msgid "Unknown status" msgstr "Unbekannter Status" -#: jobs.c:1786 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(Speicherabzug geschrieben) " -#: jobs.c:1805 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" # interner Fehler -#: jobs.c:2033 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "" -#: jobs.c:2395 nojobs.c:657 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: Prozess %ld wurde nicht von dieser Shell gestartet." -#: jobs.c:2687 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "" -#: jobs.c:3048 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: Der Job %d ist gestoppt." -#: jobs.c:3355 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: Der Job ist beendet." -#: jobs.c:3364 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: Der Job %d läuft bereits im Hintergrund." -#: jobs.c:3590 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "" # Debug Ausgabe -#: jobs.c:4114 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: Zeile %d: " -#: jobs.c:4128 nojobs.c:900 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (Speicherabzug geschrieben)" -#: jobs.c:4140 jobs.c:4153 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(gegenwärtiges Arbeitsverzeichnis ist: %s)\n" # interner Fehler -#: jobs.c:4185 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs: getpgrp war nicht erfolgreich." # interner Fehler -#: jobs.c:4241 -#, fuzzy -msgid "initialize_job_control: no job control in background" -msgstr "initialize_job_control: line discipline" - -# interner Fehler -#: jobs.c:4257 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: line discipline" # interner Fehler -#: jobs.c:4267 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4288 jobs.c:4297 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "Kann die Prozessgruppe des Terminals nicht setzen (%d)." -#: jobs.c:4302 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "Keine Job Steuerung in dieser Shell." -#: lib/malloc/malloc.c:306 +#: lib/malloc/malloc.c:296 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: Speicherzusicherung gescheitert: %s.\n" -#: lib/malloc/malloc.c:322 +#: lib/malloc/malloc.c:312 #, c-format msgid "" "\r\n" @@ -1328,63 +1303,56 @@ msgstr "" "\\r\n" "malloc: %s:%d: Speicherzusicherung verpfuscht\\r\n" -#: lib/malloc/malloc.c:323 +#: lib/malloc/malloc.c:313 msgid "unknown" msgstr "Unbekannt" -#: lib/malloc/malloc.c:811 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" -msgstr "" -"Malloc: Ein frei gekennzeichneter Speicherbereich wurde überschrieben." +msgstr "Malloc: Ein frei gekennzeichneter Speicherbereich wurde überschrieben." -#: lib/malloc/malloc.c:888 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: Wurde für bereits freigegebenen Speicherbereich aufgerufen." -#: lib/malloc/malloc.c:891 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: Wurde für nicht zugeordneten Speicherbereich aufgerufen." -#: lib/malloc/malloc.c:910 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." -#: lib/malloc/malloc.c:916 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: Beginn und Ende Segmentgrößen sind unterschiedlich." -#: lib/malloc/malloc.c:1015 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: Mit nicht zugewiesenen Argument aufgerufen." -#: lib/malloc/malloc.c:1030 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "" -"realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." +msgstr "realloc: Underflow erkannt; mh_nbytes außerhalb des Gültigkeitsbereichs." -#: lib/malloc/malloc.c:1036 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: Beginn und Ende Segmentgrößen sind unterschiedlich.<" #: lib/malloc/table.c:191 #, c-format msgid "register_alloc: alloc table is full with FIND_ALLOC?\n" -msgstr "" -"register_alloc: Speicherzuordnungstabelle ist mit FIND_ALLOC gefüllt?\n" +msgstr "register_alloc: Speicherzuordnungstabelle ist mit FIND_ALLOC gefüllt?\n" #: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "" -"register_alloc: %p ist bereits in der Speicherzuordnungstabelle als belegt " -"gekennzeichnet?\n" +msgstr "register_alloc: %p ist bereits in der Speicherzuordnungstabelle als belegt gekennzeichnet?\n" #: lib/malloc/table.c:253 #, c-format msgid "register_free: %p already in table as free?\n" -msgstr "" -"register_free: %p ist bereits in der Speicherzuordnungstabelle als frei " -"gekennzeichnet?\n" +msgstr "register_free: %p ist bereits in der Speicherzuordnungstabelle als frei gekennzeichnet?\n" #: lib/sh/fmtulong.c:102 msgid "invalid base" @@ -1409,22 +1377,22 @@ msgstr "%s: Fehlerhafte Netzwerkspfadangabe." msgid "network operations not supported" msgstr "Der Netzwerkbetrieb ist nicht unterstützt." -#: locale.c:205 +#: locale.c:200 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: Kann die Locale nicht ändern (%s)." -#: locale.c:207 +#: locale.c:202 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: Kann die Locale nicht ändern (%s): %s" -#: locale.c:272 +#: locale.c:259 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: Kann die Standorteinstellungen nicht ändern (%s)." -#: locale.c:274 +#: locale.c:261 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: Kann nicht die Locale ändern (%s): %s" @@ -1443,151 +1411,147 @@ 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:317 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "Syntaxfehler: Es wird ein arithmetischer Ausdruck benötigt." -#: make_cmd.c:319 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "Syntax Fehler: unerwartetes `;'." -#: make_cmd.c:320 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "Syntax Fehler: `((%s))'." # interner Fehler -#: make_cmd.c:572 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: Falscher Befehlstyp %d." -#: make_cmd.c:657 +#: make_cmd.c:669 #, 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')." +msgstr "Das in der Zeile %d beginnende Here-Dokument geht bis zum Dateiende (erwartet wird `%s')." -#: make_cmd.c:756 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "" -#: parse.y:2369 +#: parse.y:2324 #, c-format -msgid "" -"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " -"truncated" +msgid "shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line truncated" msgstr "" -#: parse.y:2772 +#: parse.y:2700 msgid "maximum here-document count exceeded" msgstr "" -#: parse.y:3511 parse.y:3881 +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "Dateiende beim Suchen nach `%c' erreicht." -#: parse.y:4581 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "Dateiende beim Suchen nach `]]' erreicht." -#: parse.y:4586 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "Syntaxfehler im bedingten Ausdruck: Unerwartetes Zeichen `%s'." -#: parse.y:4590 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "Syntaxfehler im bedingen Ausdruck." -#: parse.y:4668 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Unerwartetes Zeichen: `%s' anstatt von `)'" -#: parse.y:4672 +#: parse.y:4501 msgid "expected `)'" msgstr "`)' erwartet." -#: parse.y:4700 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "" -#: parse.y:4704 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "" -#: parse.y:4750 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "" -#: parse.y:4754 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "" -#: parse.y:4776 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "" -#: parse.y:4780 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "" -#: parse.y:4791 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "" -#: parse.y:4794 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "" -#: parse.y:4798 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "" -#: parse.y:6220 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "Syntaxfehler beim unerwarteten Wort `%s'" -#: parse.y:6238 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "Syntaxfehler beim unerwarteten Wort `%s'" -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "Syntax Fehler: Unerwartetes Dateiende." -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error" msgstr "Syntax Fehler" # Du oder Sie? -#: parse.y:6310 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Benutze \"%s\" um die Shell zu verlassen.\n" -#: parse.y:6472 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "Dateiende beim Suchen nach passender `)' erreicht." -#: pcomplete.c:1132 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "" -#: pcomplete.c:1722 +#: pcomplete.c:1646 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "" @@ -1597,113 +1561,109 @@ msgstr "" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: Falsches Verbindungszeichen `%d'." -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: Ungültige Dateibeschreibung." -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "" -#: print_cmd.c:382 +#: print_cmd.c:384 #, c-format msgid "xtrace fd (%d) != fileno xtrace fp (%d)" msgstr "" -#: print_cmd.c:1538 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "" -#: redir.c:121 redir.c:167 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "" -#: redir.c:174 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: Mehrdeutige Umlenkung." -#: redir.c:178 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: Kann existierende Datei nicht überschreiben." -#: redir.c:183 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: Gesperrt: Die Ausgabe darf nicht umgeleitet werden." -#: redir.c:188 +#: redir.c:192 #, 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:192 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: Kann fd keiner Variable zuweisen." -#: redir.c:588 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port Wird ohne Netzwerk nicht unterstützt" -#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "" -#: shell.c:343 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "Konnte das /tmp Verzeichnis nicht finden, bitte anlegen." -#: shell.c:347 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp muss ein gültiger Verzeichnisname sein." -#: shell.c:798 -msgid "pretty-printing mode ignored in interactive shells" -msgstr "" - -#: shell.c:940 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: Ungültige Option" -#: shell.c:1299 +#: shell.c:1282 #, 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:1306 +#: shell.c:1289 #, 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:1494 +#: shell.c:1458 msgid "cannot start debugger; debugging mode disabled" msgstr "Kann keinen Debugger starten. Der Debugmodus ist gesperrt." -#: shell.c:1608 +#: shell.c:1566 #, c-format msgid "%s: Is a directory" msgstr "%s: Ist ein Verzeichnis." -#: shell.c:1826 +#: shell.c:1777 msgid "I have no name!" msgstr "Ich habe keinen Benutzernamen!" -#: shell.c:1980 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, Version %s-(%s)\n" -#: shell.c:1981 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1712,50 +1672,49 @@ msgstr "" "Aufruf:\t%s [Lange GNU Option] [Option] ...\n" "\t\t%s [Lange GNU Option] [Option] Script-Datei ...\n" -#: shell.c:1983 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Lange GNU Optionen:\n" -#: shell.c:1987 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Shell-Optionen:\n" -#: shell.c:1988 +#: shell.c:1938 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" +msgstr "\t-ilrsD oder -c Kommando\toder -O shopt_option (Nur Aufruf)\n" -#: shell.c:2003 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s oder Option -o\n" -#: shell.c:2009 +#: shell.c:1959 #, 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:2010 +#: shell.c:1960 #, 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:2011 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Mit dem `bashbug' Kommando können Fehler gemeldet werden.\n" -#: shell.c:2013 +#: shell.c:1963 #, c-format msgid "bash home page: \n" msgstr "Bash Homepage: \n" -#: shell.c:2014 +#: shell.c:1964 #, c-format msgid "General help using GNU software: \n" msgstr "Allgemeine Hilfe für GNU Software: \n" -#: sig.c:695 +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: Ungültige Operation" @@ -1929,21 +1888,21 @@ msgstr "Unbekannte Signalnummer." msgid "Unknown Signal #%d" msgstr "Unbekanntes Signal Nr.: %d." -#: subst.c:1450 subst.c:1641 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Falsche Ersetzung: Keine schließende `%s' in `%s' enthalten." -#: subst.c:3209 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: Kann einem Feldelement keine Liste zuweisen." -#: subst.c:5734 subst.c:5750 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "Kann keine Pipe für die Prozessersetzung erzeugen." -#: subst.c:5796 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "Kann den Kindsprozess für die Prozessersetzung nicht erzeugen." @@ -1962,78 +1921,69 @@ msgstr "Kann nicht die benannte Pipe %s zum schreiben öffnen." msgid "cannot duplicate named pipe %s as fd %d" msgstr "Kann die benannte Pipe %s nicht auf fd %d." -#: subst.c:5990 +#: subst.c:5959 msgid "command substitution: ignored null byte in input" msgstr "Kommansosubstitution: NULL byte in der Eingabe ignoriert." -#: subst.c:6121 +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "Kann keine Pipes für Kommandoersetzung erzeugen." -#: subst.c:6164 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "Kann keinen Unterprozess für die Kommandoersetzung erzeugen." # interner Fehler -#: subst.c:6190 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "Kommandosubstitution: Kann Pipe nicht als fd 1 duplizieren." -#: subst.c:6641 subst.c:9483 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "" -#: subst.c:6737 subst.c:6755 subst.c:6903 +#: subst.c:6666 subst.c:8351 subst.c:8371 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: Falsche Substitution." + +#: subst.c:6800 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: Ungültige indirekte Expansion" -#: subst.c:6771 subst.c:6910 +#: subst.c:6807 #, c-format msgid "%s: invalid variable name" msgstr "`%s': Ungültiger Variablenname." -#: subst.c:6962 -#, fuzzy, c-format -msgid "%s: parameter not set" -msgstr "%s: Parameter ist Null oder nicht gesetzt." - -#: subst.c:6964 +#: subst.c:6854 #, c-format msgid "%s: parameter null or not set" msgstr "%s: Parameter ist Null oder nicht gesetzt." # interner Fehler -#: subst.c:7201 subst.c:7216 +#: subst.c:7089 subst.c:7104 #, c-format msgid "%s: substring expression < 0" msgstr "%s: Teilstring-Ausdruck < 0." -#: subst.c:8839 subst.c:8860 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: Falsche Substitution." - -#: subst.c:8948 +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: Kann so nicht zuweisen." -#: subst.c:9346 -msgid "" -"future versions of the shell will force evaluation as an arithmetic " -"substitution" -msgstr "" -"Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer " -"Ersetzungen erzwingen." +#: subst.c:8802 +msgid "future versions of the shell will force evaluation as an arithmetic substitution" +msgstr "Zukünftige Versionen dieser Shell werden das Auswerten arithmetischer Ersetzungen erzwingen." -#: subst.c:9903 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "Falsche Ersetzung: Keine schließende \"`\" in %s." -#: subst.c:10907 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "Keine Entsprechung: %s" @@ -2056,107 +2006,106 @@ msgstr "`)' erwartet." msgid "`)' expected, found %s" msgstr "`)' erwartet, %s gefunden." -#: test.c:282 test.c:748 test.c:751 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: Einstelliger (unärer) Operator erwartet." -#: test.c:469 test.c:791 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: Zweistelliger (binärer) Operator erwartet." -#: test.c:873 +#: test.c:869 msgid "missing `]'" msgstr "Fehlende `]'" -#: trap.c:216 +#: trap.c:224 msgid "invalid signal number" msgstr "Ungültige Signalnummer." -#: trap.c:379 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: Ungültiger Wert in trap_list[%d]: %p" -#: trap.c:383 +#: trap.c:391 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" msgstr "" # Programmierfehler -#: trap.c:439 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: Falsches Signal %d." -#: variables.c:399 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "Fehler beim Importieren der Funktionsdefinition für `%s'." -#: variables.c:801 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "Der Shell Level (%d) ist zu hoch und wird auf 1 zurückgesetzt." -#: variables.c:2512 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "" -#: variables.c:2531 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: Der Variable könnte kein Wert zugewiesen sein." -#: variables.c:3246 +#: variables.c:3043 #, c-format msgid "%s: assigning integer to name reference" msgstr "" -#: variables.c:4149 +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "" -#: variables.c:4437 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "" -#: variables.c:4442 variables.c:4451 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "" -#: variables.c:4457 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "" -#: variables.c:4911 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "" -#: variables.c:4924 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "" -#: variables.c:4999 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "" -#: variables.c:5862 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: Kann nicht als Datei geöffnet werden." -#: variables.c:5867 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "" -#: variables.c:5912 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: Kompatibilitätswert außerhalb des Gültigkeitsbereiches." @@ -2166,12 +2115,8 @@ msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" -"Lizenz GPLv3+: GNU GPL Version 3 oder jünger \n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "Lizenz GPLv3+: GNU GPL Version 3 oder jünger \n" #: version.c:86 version2.c:86 #, c-format @@ -2186,22 +2131,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:93 +#: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: Konnte nicht %lu Bytes reservieren (%lu bytes reserviert)." -#: xmalloc.c:95 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: Konnte nicht %lu Bytes reservieren." -#: xmalloc.c:165 +#: xmalloc.c:163 #, 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:167 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: Konnte nicht %lu Bytes reservieren." @@ -2215,13 +2160,10 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] Name [Name ...]" #: 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]" +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 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]" @@ -2298,9 +2240,7 @@ msgstr "logout [n]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "" -"fc [-e Editor] [-lnr] [Anfang] [Ende] oder fc -s [Muster=Ersetzung] " -"[Kommando]" +msgstr "fc [-e Editor] [-lnr] [Anfang] [Ende] oder fc -s [Muster=Ersetzung] [Kommando]" #: builtins.c:109 msgid "fg [job_spec]" @@ -2319,12 +2259,8 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [Muster ...]" #: builtins.c:123 -msgid "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " -"[arg...]" -msgstr "" -"history [-c] [-d Offset] [n] oder history -anrw [Dateiname] oder history -ps " -"Argument [Argument...]" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "history [-c] [-d Offset] [n] oder history -anrw [Dateiname] oder history -ps Argument [Argument...]" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2335,24 +2271,16 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]" 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 | jobspec ... oder " -"kill -l [Signalname]" +msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgstr "kill [-s Signalname | -n Signalnummer | -Signalname] pid | jobspec ... oder kill -l [Signalname]" #: builtins.c:136 msgid "let arg [arg ...]" msgstr "let Argument [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 Feld] [-d Begrenzer] [-i Text] [-n Zeichenanzahl] [-N " -"Zeichenanzahl] [-p Prompt] [-t Zeitlimit] [-u fd] [Name ...]" +msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgstr "read [-ers] [-a Feld] [-d Begrenzer] [-i Text] [-n Zeichenanzahl] [-N Zeichenanzahl] [-p Prompt] [-t Zeitlimit] [-u fd] [Name ...]" #: builtins.c:140 msgid "return [n]" @@ -2415,8 +2343,7 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [Modus]" #: builtins.c:177 -#, fuzzy -msgid "wait [-fn] [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2444,12 +2371,8 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case Wort in [Muster [| Muster]...) Kommandos ;;]... esac" #: builtins.c:194 -msgid "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" -msgstr "" -"if Kommandos; then Kommandos; [ elif Kommandos; then Kommandos; ]... [ else " -"Kommandos; ] fi" +msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgstr "if Kommandos; then Kommandos; [ elif Kommandos; then Kommandos; ]... [ else Kommandos; ] fi" #: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" @@ -2508,44 +2431,24 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] Format [Argumente]" #: builtins.c:231 -msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-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 ...]" +msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-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 ...]" #: 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 Option] [-A Aktion] [-G Suchmuster] [-W " -"Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S " -"Suffix] [Wort]" +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 Aktion] [-G Suchmuster] [-W Wortliste] [-F Funktion] [-C Kommando] [-X Filtermuster] [-P Prefix] [-S Suffix] [Wort]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o Option] [-DE] [Name ...]" #: builtins.c:242 -msgid "" -"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"mapfile [-d Begrenzer] [-n Anzahl] [-O Quelle] [-s Anzahl] [-t] [-u fd] [-C " -"Callback] [-c Menge] [Feldvariable]" +msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "mapfile [-d Begrenzer] [-n Anzahl] [-O Quelle] [-s Anzahl] [-t] [-u fd] [-C Callback] [-c Menge] [Feldvariable]" #: builtins.c:244 -#, fuzzy -msgid "" -"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]" +msgid "readarray [-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]" # alias #: builtins.c:256 @@ -2563,8 +2466,7 @@ msgid "" " -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" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" "Definiert Aliase oder zeigt sie an.\n" @@ -2614,30 +2516,25 @@ msgid "" " 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" +" 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" +" -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" +" -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" +" -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" @@ -2652,47 +2549,33 @@ msgstr "" " re-read-init-file'.\n" " \n" " Optionen:\n" -" -m Keymap Benutzt KEYMAP as Tastaturbelegung für die " -"Laufzeit\n" -" dieses Kommandos. Gültige Keymapnamen sind: " -"emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" -"move,\n" +" -m Keymap Benutzt KEYMAP as Tastaturbelegung für die Laufzeit\n" +" dieses Kommandos. Gültige Keymapnamen sind: emacs,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" " vi-command und vi-insert.\n" " -l Listet Funktionsnamen auf.\n" " -P Listet Funktionsnamen und Tastenzuordnungen auf.\n" -" -p Listet Funktionsnamen und Tastenzuordnungen so " -"auf,\n" -" dass sie direkt als Eingabe verwendet werden " -"können.\n" -" -S Listet Tastenfolgen und deren Werte auf, die " -"Makros \n" +" -p Listet Funktionsnamen und Tastenzuordnungen so auf,\n" +" dass sie direkt als Eingabe verwendet werden können.\n" +" -S Listet Tastenfolgen und deren Werte auf, die Makros \n" " aufrufen.\n" -" -s Listet Tastenfolgen und deren Werte auf, die " -"Makros \n" -" aufrufen, dass sie als Eingabe wiederverwendet " -"werden\n" +" -s Listet Tastenfolgen und deren Werte auf, die Makros \n" +" aufrufen, dass sie als Eingabe wiederverwendet werden\n" " können.\n" " -V Listet Variablennamen und Werte auf.\n" -" -v Listet Variablennamen und Werte so auf, dass sie " -"als\n" +" -v Listet Variablennamen und Werte so auf, dass sie als\n" " Eingabe verwendet werden können.\n" " -q Funktionsname Sucht die Tastenfolgen, welche die angegebene\n" " Funktion aufrufen.\n" -" -u Funktionsname Entfernt alle der Funktion zugeordneten " -"Tastenfolgen.\n" -" -r Tastenfolge Entfernt die Zuweisungen der angegebeben " -"Tastenfolge.\n" -" -f Dateiname Liest die Tastenzuordnungen aus der angegebenen " -"Datei.\n" -" -x Tastenfolge:Shellkommando\tWeist der Tastenfolge das " -"Shellkommando\n" +" -u Funktionsname Entfernt alle der Funktion zugeordneten Tastenfolgen.\n" +" -r Tastenfolge Entfernt die Zuweisungen der angegebeben Tastenfolge.\n" +" -f Dateiname Liest die Tastenzuordnungen aus der angegebenen Datei.\n" +" -x Tastenfolge:Shellkommando\tWeist der Tastenfolge das Shellkommando\n" " \t\t\t\t\tzu.\n" " -X Listet mit -x erzeugte\n" " Tastenfolgen und deren Werte\n" " auf, die Makros aufrufen, dass\n" -" sie als Eingabe wiederverwendet " -"werden\n" +" sie als Eingabe wiederverwendet werden\n" " können.\n" " \n" " Rückgabewert: \n" @@ -2746,8 +2629,7 @@ msgid "" " \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" +" 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" @@ -2783,16 +2665,14 @@ 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" +" 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" +" Ist ungleich 0 wenn keine Shellfunktion ausgeführt wird oder das Argument\n" " ungültig ist, sonst 0." # cd @@ -2800,22 +2680,16 @@ msgstr "" msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\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" +" 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" +" 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" @@ -2831,18 +2705,16 @@ msgid "" " \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" +" `..' 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" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" "Wechselt das Arbeitsverzeichnis.\n" "\n" -" Wechselt in das angegebene Abeitsverzeichnis. Ohne Angabe eines\n" +" Wechselt in das angegebene Arbeitsverzeichnis. Ohne Angabe eines\n" " Verzeichnisses wird in das in der HOME Variable definierte\n" " Verzeichnis gewechselt.\n" "\n" @@ -2960,8 +2832,7 @@ 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" +" 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" @@ -2973,8 +2844,7 @@ msgid "" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -"Führt ein einfaches Kommando aus oder zeigt Informationen über Kommandos " -"an.\n" +"Führt ein einfaches Kommando aus oder zeigt Informationen über Kommandos an.\n" "\n" " Führt das Kommando mit den angegebeneb Argumenten aus, ohne\n" " Shell-Funktion nachzuschlagen oder zeigt Informationen über die\n" @@ -2982,21 +2852,18 @@ msgstr "" " werden, wenn eine Shell-Funktion gleichen Namens existiert.\n" " \n" " Optionen:\n" -" -p\ts wird ein Standardwert für PATH verwendet, der garantiert, dass " -"alle\n" +" -p\ts wird ein Standardwert für PATH verwendet, der garantiert, dass alle\n" " \t\tStandard-Dienstprogramme gefunden werden.\n" " -v\tBeschreibung des Kommandos ausgeben.\n" " \t\tÄhnlich dem eingebauten Kommando »type«.\n" " -V\tEine ausführlichere Beschreibung jedes Kommandos ausgeben.\n" " \n" " Rückgabewert:\n" -" Gibt den Rückgabewert des Kommandos zurück, oder eine Fehlermeldung, " -"wenn\n" +" Gibt den Rückgabewert des Kommandos zurück, oder eine Fehlermeldung, wenn\n" " das Kommando nicht gefunden wird." # declare #: builtins.c:490 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3015,11 +2882,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 the value of each NAME to lower case on assignment\n" +" -l\tto convert NAMEs 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" +" -u\tto convert NAMEs to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3027,8 +2894,7 @@ msgid "" " 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" +" 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" @@ -3119,8 +2985,7 @@ msgstr "" msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by " -"a\n" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3262,8 +3127,7 @@ msgstr "" msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\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" @@ -3365,8 +3229,7 @@ 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" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3374,13 +3237,11 @@ msgid "" " -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" +" 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." +" Returns success unless COMMAND is not found or a redirection error occurs." msgstr "" "Ersetzt die Shell durch das angegebene Kommando.\n" " \n" @@ -3411,8 +3272,7 @@ msgid "" msgstr "" "Beendet die aktuelle Shell.\n" "\n" -" Beendet die aktuelle Shell mit dem Rückgabewert N. Wenn N nicht " -"angegeben ist,\n" +" 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 @@ -3420,8 +3280,7 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" " Beendet eine Login-Shell.\n" @@ -3435,15 +3294,13 @@ msgstr "" 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" +" 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" +" -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" @@ -3457,8 +3314,7 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" Returns success or status of executed command; non-zero if an error occurs." msgstr "" #: builtins.c:758 @@ -3485,10 +3341,8 @@ msgstr "" 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" +" 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" @@ -3508,8 +3362,7 @@ 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" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3529,7 +3382,6 @@ msgstr "" # help #: builtins.c:812 -#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3544,11 +3396,10 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifying a help topic\n" +" PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" "Informationen zu eingebauten Kommandos.\n" " \n" @@ -3579,8 +3430,7 @@ 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. Negative\n" -" \t\toffsets count back from the end of the history list\n" +" -d offset\tdelete the history entry at position 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" @@ -3598,14 +3448,13 @@ msgid "" " \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" +" 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 "" -#: builtins.c:873 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3629,7 +3478,7 @@ msgid "" " If -x is used, returns the exit status of COMMAND." msgstr "" -#: builtins.c:900 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3646,7 +3495,7 @@ msgid "" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -#: builtins.c:919 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3669,15 +3518,14 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:943 +#: builtins.c:942 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" +" 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" @@ -3714,34 +3562,30 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:988 +#: builtins.c:987 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" +" 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" +" 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" +" 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" +" -e\tuse Readline to obtain the line in an interactive shell\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" +" -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" @@ -3759,14 +3603,12 @@ msgid "" " -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" +" 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 "" -#: builtins.c:1035 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3778,7 +3620,7 @@ msgid "" " Returns N, or failure if the shell is not executing a function or script." msgstr "" -#: builtins.c:1048 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3821,8 +3663,7 @@ msgid "" " 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" +" 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" @@ -3846,8 +3687,7 @@ msgid "" " 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" +" -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" @@ -3864,7 +3704,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1133 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3876,8 +3716,7 @@ msgid "" " -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" +" 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" @@ -3886,13 +3725,12 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1155 +#: builtins.c:1154 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" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -3905,7 +3743,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1174 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3926,7 +3764,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1196 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3937,7 +3775,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1208 builtins.c:1223 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3951,7 +3789,7 @@ msgid "" " FILENAME cannot be read." msgstr "" -#: builtins.c:1239 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3965,7 +3803,7 @@ msgid "" " Returns success unless job control is not enabled or an error occurs." msgstr "" -#: builtins.c:1255 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3999,8 +3837,7 @@ msgid "" " -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 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" @@ -4021,8 +3858,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4049,7 +3885,7 @@ msgid "" msgstr "" # [ -#: builtins.c:1337 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4063,12 +3899,11 @@ msgstr "" " schließt." # times -#: builtins.c:1346 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4082,12 +3917,11 @@ msgstr "" " Rückgabewert:\n" " Immer 0." -#: builtins.c:1358 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\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" @@ -4096,37 +3930,29 @@ msgid "" " 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" +" 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" +" 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 or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in 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." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" -#: builtins.c:1394 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4152,16 +3978,14 @@ msgid "" " 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." +" Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" -#: builtins.c:1425 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\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" @@ -4205,7 +4029,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1475 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4223,44 +4047,38 @@ msgid "" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -#: builtins.c:1495 +#: builtins.c:1494 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" +" 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" +" status is zero. If ID is a 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:1519 +#: builtins.c:1515 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" +" 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" +" Returns the status of the last PID; fails if PID is invalid or an invalid\n" " option is given." msgstr "" -#: builtins.c:1534 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4273,7 +4091,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1548 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4290,7 +4108,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1566 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4310,7 +4128,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1587 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4326,7 +4144,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1604 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4337,28 +4155,23 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1616 +#: builtins.c:1612 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" +" 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" +" `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 "" -#: builtins.c:1633 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4369,7 +4182,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1645 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4380,7 +4193,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1657 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4393,13 +4206,12 @@ msgid "" " The coproc command returns an exit status of 0." msgstr "" -#: builtins.c:1671 +#: builtins.c:1667 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" +" 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" @@ -4407,7 +4219,7 @@ msgid "" " Returns success unless NAME is readonly." msgstr "" -#: builtins.c:1685 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4418,7 +4230,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1697 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4433,7 +4245,7 @@ msgid "" msgstr "" # (( )) -#: builtins.c:1712 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4453,16 +4265,13 @@ msgstr "" " Gibt »1« zurück, wenn die Auswertung des letzten Arguments Null\n" " ergibt, sonst »0«." -#: builtins.c:1724 +#: builtins.c:1720 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" +" 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" @@ -4482,7 +4291,7 @@ msgid "" msgstr "" # variable_help -#: builtins.c:1750 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4555,8 +4364,7 @@ msgstr "" " Anzahl EOF Zeichen (Ctrl-D) abgewartet, bis die Shell\n" " verlassen wird. Der Vorgabewert ist 10. Ist IGNOREEOF\n" " nicht gesetzt, signalisiert EOF das Ende der Eingabe.\n" -" MACHTYPE Eine Zeichenkette die das aktuell laufende System " -"beschreibt.\n" +" MACHTYPE Eine Zeichenkette die das aktuell laufende System beschreibt.\n" " MAILCHECK\tZeit in s, nach der nach E-Mail gesehen wird.\n" " MAILPATH\tEine durch Doppelpunkt getrennte Liste von Dateinamen,\n" " die nach E-Mail durchsucht werden.\n" @@ -4594,7 +4402,7 @@ msgstr "" " Kommandos angibt.\n" # pushd -#: builtins.c:1807 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -4650,7 +4458,7 @@ msgstr "" " wurde oder der Verzeichniswechsel nicht erfolgreich war." # popd -#: builtins.c:1841 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -4704,7 +4512,7 @@ msgstr "" " wurde oder der Verzeichniswechsel nicht erfolgreich war." # dirs -#: builtins.c:1871 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -4758,14 +4566,13 @@ msgstr "" " Gibt Erfolg zurück, außer bei einer ungültigen Option oder wenn\n" " ein Fehler auftritt." -#: builtins.c:1902 -#, fuzzy +#: builtins.c:1898 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" +" arguments, list all shell options with an indication of whether or not each\n" +" is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4798,7 +4605,7 @@ msgstr "" " worden ist, wird Fehler zurückgegeben." # printf -#: builtins.c:1923 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4806,47 +4613,38 @@ msgid "" " -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" +" 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" +" 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" +" 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" +" %(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" +" 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" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" "Returns success unless an invalid option is given or a write or\n" " assignment error occurs.<" -#: builtins.c:1957 +#: builtins.c:1953 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" +" 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" @@ -4866,29 +4664,25 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1985 +#: builtins.c:1981 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" +" 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 "" -#: builtins.c:2000 +#: builtins.c:1996 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" +" 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" @@ -4910,26 +4704,21 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2030 +#: builtins.c:2026 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" +" 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" +" -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" +" -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" @@ -4942,18 +4731,16 @@ msgid "" " 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" +" 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" +" Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" # readarray -#: builtins.c:2066 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/es.po b/po/es.po index 2f22ab2fd..24ad70075 100644 --- a/po/es.po +++ b/po/es.po @@ -1,145 +1,140 @@ -# Spanish translation for GNU bash-4.4 +# 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 , 2000 - 2011. # Francisco Javier Serrador +# Antonio Ceballos Roa , 2018 +# msgid "" msgstr "" "Project-Id-Version: GNU bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-27 14:15-0400\n" -"PO-Revision-Date: 2018-04-24 15:37+0200\n" -"Last-Translator: Francisco Javier Serrador \n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2018-06-04 22:22+0200\n" +"Last-Translator: Antonio Ceballos Roa \n" "Language-Team: Spanish \n" +"Language: es\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\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" -"X-Generator: Poedit 2.0.4\n" -# Vocabulario -# array: unimatriz, matríz lineal -# shift: arrastre lateral -#: arrayfunc.c:58 +#: arrayfunc.c:54 msgid "bad array subscript" -msgstr "subíndice de unimatriz equivocado" +msgstr "subíndice de matriz incorrecto" -#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 -#: variables.c:2922 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 #, c-format msgid "%s: removing nameref attribute" -msgstr "%s: quitando atributo de referencial del nombre" +msgstr "%s: se elimina el atributo nameref" -#: arrayfunc.c:398 builtins/declare.def:831 +#: arrayfunc.c:393 builtins/declare.def:780 #, 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:582 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: índice de unimatriz asociativa inválido" +msgstr "%s: clave de matriz asociativa no válida" -#: arrayfunc.c:584 +#: arrayfunc.c:580 #, 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:629 +#: arrayfunc.c:625 #, 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:436 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: no se puede crear: %s" -#: bashline.c:4111 +#: bashline.c:4091 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 el mandato" +msgstr "bash_execute_unix_command: no se puede encontrar la combinación de teclas para la orden" -#: bashline.c:4221 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: el primer carácter que no es espacio en blanco no es «\"»" -#: bashline.c:4250 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "no hay un `%c' que cierre en %s" -#: bashline.c:4284 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: falta un «:» separador" -#: braces.c:331 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" -msgstr "rama expansión: no puede reubicar memoria para %s" +msgstr "expansión de llaves: no se puede asignar memoria a %s" -#: braces.c:429 -#, fuzzy, c-format -msgid "brace expansion: failed to allocate memory for %u elements" -msgstr "expansión de rama: fallado para asignar memoria para %d elementos" +#: braces.c:427 +#, c-format +msgid "brace expansion: failed to allocate memory for %d elements" +msgstr "expansión de llaves: fallo al asignar memoria a %d elementos" -#: braces.c:473 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" -msgstr "rama expansiva: fallada a reservar memoria para «%s»" +msgstr "expansión de llaves: fallo al asignar memoria a «%s»" -#: builtins/alias.def:131 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nombre de alias inválido" -#: builtins/bind.def:122 builtins/bind.def:125 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "no se activó la edición de línea" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nombre de combinación de teclas inválido" -#: builtins/bind.def:252 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: no se puede leer: %s" -#: builtins/bind.def:304 builtins/bind.def:334 +#: 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 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nombre de función desconocido" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s no está asignado a ninguna tecla.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " 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:77 builtins/break.def:119 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" -msgstr "cuenta de ciclo" +msgstr "cuenta de bucle" -#: builtins/break.def:139 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" -msgstr "" -"sólo tiene significado dentro de `for', `while', o `until' como un bucle" +msgstr "solo tiene significado en un bucle `for', `while', o `until'" #: builtins/caller.def:136 msgid "" @@ -151,238 +146,238 @@ msgstr "" " \n" " Sin EXPR, devuelve " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME no está definido" -#: builtins/cd.def:327 builtins/common.c:161 test.c:889 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "demasiados argumentos" -#: builtins/cd.def:334 +#: builtins/cd.def:336 msgid "null directory" msgstr "directorio nulo" -#: builtins/cd.def:345 +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD no está establecido" -#: builtins/common.c:96 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "línea %d: " -#: builtins/common.c:134 error.c:264 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "aviso: " -#: builtins/common.c:148 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: modo de empleo: " -#: builtins/common.c:193 shell.c:510 shell.c:838 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: la opción requiere un argumento" -#: builtins/common.c:200 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: se requiere un argumento numérico" -#: builtins/common.c:207 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: no encontrado" -#: builtins/common.c:216 shell.c:851 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: opción inválida" -#: builtins/common.c:223 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" -msgstr "%s: nombre opcional inválido" +msgstr "%s: nombre de opción inválido" -#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': no es un identificador válido" -#: builtins/common.c:240 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "número octal inválido" -#: builtins/common.c:242 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "número hexadecimal inválido" -#: builtins/common.c:244 expr.c:1538 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "número inválido" -#: builtins/common.c:252 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" -msgstr "%s: señal especificada no válida" +msgstr "%s: la especificación de señal no es válida" -#: builtins/common.c:259 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "`%s': no es un pid o una especificación válida de tarea" +msgstr "`%s': no es un pid o una especificación válida de trabajo" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: variable de sólo lectura" -#: builtins/common.c:274 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fuera de rango" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argumento" -#: builtins/common.c:276 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s fuera de rango" -#: builtins/common.c:284 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" -msgstr "%s: no existe esa tarea" +msgstr "%s: no existe ese trabajo" -#: builtins/common.c:292 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" -msgstr "%s: no hay control de tareas" +msgstr "%s: no hay control de trabajos" -#: builtins/common.c:294 +#: builtins/common.c:300 msgid "no job control" -msgstr "no hay control de tarea" +msgstr "no hay control de trabajos" -#: builtins/common.c:304 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: restringido" -#: builtins/common.c:306 +#: builtins/common.c:312 msgid "restricted" msgstr "restringido" -#: builtins/common.c:314 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" -msgstr "%s: no una shell interna" +msgstr "%s: no es una orden interna de shell" -#: builtins/common.c:323 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "error de escritura: %s" -#: builtins/common.c:331 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "error al establecer los atributos de la terminal: %s" -#: builtins/common.c:333 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "error al obtener los atributos de la terminal: %s" -#: builtins/common.c:579 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" -msgstr "%s: error obteniendo directorio actual: %s: %s\n" +msgstr "%s: error al obtener el directorio actual: %s: %s\n" -#: builtins/common.c:645 builtins/common.c:647 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s: especificación de tarea ambigua" +msgstr "%s: especificación de trabajo ambigua" -#: builtins/common.c:908 +#: builtins/common.c:918 msgid "help not available in this version" -msgstr "ayuda no disponible dentro de esta versión" +msgstr "ayuda no disponible en esta versión" #: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s: nombre de acción inválido" -#: builtins/complete.def:452 builtins/complete.def:653 -#: builtins/complete.def:874 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, 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:707 +#: builtins/complete.def:699 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:709 +#: builtins/complete.def:701 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:847 +#: builtins/complete.def:831 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:132 +#: builtins/declare.def:127 msgid "can only be used in a function" -msgstr "sólo se puede emplear dentro de una función" +msgstr "sólo se puede usar dentro de una función" -#: builtins/declare.def:369 builtins/declare.def:736 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "%s: referencia variable no puede ser una unimatriz" +msgstr "%s: referencia variable no puede ser una matriz" -#: builtins/declare.def:380 variables.c:3161 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" -msgstr "%s: variable nombrada referenciada a sí mismo no permitido" +msgstr "%s: no se permiten las autoreferencias a variables nameref" -#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 -#: variables.c:3158 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 #, c-format msgid "%s: circular name reference" -msgstr "%s: nombre circular referenciado" +msgstr "%s: referencia de nombre circular" -#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 #, c-format msgid "`%s': invalid variable name for name reference" -msgstr "`%s': nombre variable inválido para referencia del nombre" +msgstr "`%s': nombre variable inválido para referencia de nombre" -#: builtins/declare.def:500 +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "no se puede usar `-f' para hacer funciones" -#: builtins/declare.def:512 execute_cmd.c:5797 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: función de sólo lectura" -#: builtins/declare.def:804 +#: builtins/declare.def:753 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "%s: asignación entrecomillado compuesto matriciado obsoleto" +msgstr "%s: asignación obsoleta de matriz compuesta entrecomillada" -#: builtins/declare.def:818 +#: builtins/declare.def:767 #, 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:825 builtins/read.def:784 +#: builtins/declare.def:774 builtins/read.def:751 #, 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" @@ -401,7 +396,7 @@ msgstr "no se puede encontrar %s en el objeto compartido %s: %s" #: builtins/enable.def:387 #, c-format msgid "load function for %s returns failure (%d): not loaded" -msgstr "función de carga para %s devuelve fallo (%d): no cargado" +msgstr "función de carga para %s devuelve fallo (%d): no se ha efectuado la carga" #: builtins/enable.def:512 #, c-format @@ -413,73 +408,73 @@ msgstr "%s: no cargado dinámicamente" msgid "%s: cannot delete: %s" msgstr "%s: no se puede borrar: %s" -#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: es un directorio" -#: builtins/evalfile.c:144 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: no es un fichero regular" -#: builtins/evalfile.c:153 +#: builtins/evalfile.c:159 #, 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:188 builtins/evalfile.c:206 shell.c:1623 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: no se puede ejecutar el fichero binario" -#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: no se puede ejecutar: %s" -#: builtins/exit.def:64 +#: builtins/exit.def:67 #, c-format msgid "logout\n" -msgstr "salida\n" +msgstr "cerrar sesión\n" -#: builtins/exit.def:89 +#: builtins/exit.def:92 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:121 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" -msgstr "Hay tareas detenidas.\n" +msgstr "Hay trabajos detenidos.\n" -#: builtins/exit.def:123 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" -msgstr "Hay tareas en ejecución.\n" +msgstr "Hay trabajos en ejecución.\n" -#: builtins/fc.def:265 +#: builtins/fc.def:269 msgid "no command found" -msgstr "no se encontró el mandato" +msgstr "no se ha encontrado ninguna orden" -#: builtins/fc.def:323 builtins/fc.def:372 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "especificación de historia" -#: builtins/fc.def:393 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: no se puede abrir el fichero temporal: %s" -#: builtins/fg_bg.def:152 builtins/jobs.def:284 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "actual" -#: builtins/fg_bg.def:161 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" -msgstr "tarea %d iniciada sin control de tarea" +msgstr "trabajo %d iniciado sin control de trabajo" #: builtins/getopt.c:110 #, c-format @@ -491,40 +486,38 @@ 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:91 +#: builtins/hash.def:92 msgid "hashing disabled" msgstr "asociación desactivada" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabla de asociación vacía\n" -#: builtins/hash.def:266 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" -msgstr "coinc\tmandato\n" +msgstr "coinc\torden\n" -#: builtins/help.def:133 +#: builtins/help.def:135 +#, c-format 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:185 +#: builtins/help.def:187 #, c-format -msgid "" -"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"no hay temas de ayuda que coincidan con `%s'. Pruebe `help help' o `man -k %" -"s' o `info %s'." +msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "no hay temas de ayuda que coincidan con `%s'. Pruebe `help help' o `man -k %s' o `info %s'." -#: builtins/help.def:224 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: no se puede abrir: %s" -#: builtins/help.def:524 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -535,32 +528,30 @@ 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 los mandatos 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:154 +#: builtins/history.def:155 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:197 builtins/history.def:212 -#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 +#: builtins/history.def:187 msgid "history position" msgstr "posición en la historia" -#: builtins/history.def:331 +#: builtins/history.def:264 #, c-format msgid "%s: invalid timestamp" -msgstr "%s: sello inválido" +msgstr "%s: marca de tiempo inválida" -#: builtins/history.def:442 +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: falló la expansión de la historia" @@ -574,87 +565,87 @@ msgstr "%s: falló inlib" msgid "no other options allowed with `-x'" msgstr "no se permiten otras opciones con `-x'" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" -msgstr "%s: argumentos deben ser procesos o los ID de tareas" +msgstr "%s: los argumentos deben ser IDs de procesos o trabajos" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Error desconocido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 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:271 builtins/read.def:305 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificación de descriptor de fichero inválida" -#: builtins/mapfile.def:279 builtins/read.def:312 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descriptor de fichero inválido: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: cuenta de líneas inválida" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: origen de matriz inválido" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantum de llamada inválido" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:350 msgid "empty array variable name" -msgstr "nombre de variable unimatricional vacío" +msgstr "nombre de variable matriz vacío" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "se requiere el soporte de variable de matriz" -#: builtins/printf.def:416 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "`%s': falta el carácter de formato" -#: builtins/printf.def:471 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificación de formato de tiempo inválida" -#: builtins/printf.def:673 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "`%c': carácter de formato inválido" -#: builtins/printf.def:699 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:785 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "problema interpretando formato: %s" +msgstr "problema con el análisis del formato: %s" -#: builtins/printf.def:882 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "falta el dígito hexadecimal para \\x" -#: builtins/printf.def:897 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "falta el dígito unicode para \\%c" @@ -666,21 +657,21 @@ msgstr "no hay otro directorio" #: builtins/pushd.def:360 #, c-format msgid "%s: invalid argument" -msgstr "%s: argumento no válido" +msgstr "%s: argumento inválido" -#: builtins/pushd.def:480 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:524 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "la pila de directorios está vacía" -#: builtins/pushd.def:526 +#: builtins/pushd.def:521 msgid "directory stack index" -msgstr "pila indexada de directorios" +msgstr "índice de pilas de directorios" -#: builtins/pushd.def:701 +#: builtins/pushd.def:696 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,36 +686,32 @@ msgid "" " \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" +" +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" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" -"Enseña la lista de directorios actualmente grabados. Los directorios\n" -" se guardan en la lista con el mandato `pushd'; pueden ir saliendo de\n" -" la lista con el mandato `popd'.\n" +"Muestra la lista de directorios actualmente grabados. Los directorios\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" " \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" -" \t\tsu posición en la pila como prefijo\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" -" \t\tla lista mostrada por dirs cuando se llama sin opciones,\n" -" \t\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" -"\t\tla lista mostrada por dirs cuando se llama sin opciones,\n" -"\t\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:723 +#: builtins/pushd.def:718 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" @@ -748,25 +735,29 @@ msgid "" " \n" " The `dirs' builtin displays the directory stack." msgstr "" -"Agrega un directorio al techo de la pila de directorios, o rota\n" -" la pila, haciendo que el nuevo techo de la pila sea el\n" -" directorio de trabajo actual. Sin argumentos, intercambia\n" -" los dos directorios del techo.\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\t Rota la pila para que el N-ésimo directorio (contando\n" -" \t de la izquierda de la lista mostrada por `dirs',\n" -" \t comenzando desde cero) esté en el techo.\n" -" -N\t Rota la pila para que el N-ésimo directorio (contando\n" -" \t de la derecha de la lista mostrada por `dirs',\n" -" \t comenzando desde cero) esté en el techo.\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\t Añade DIR a la pila de directorios en el techo,\n" -" \t haciéndolo el nuevo directorio de trabajo actual.\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" -" Los «dir» internos enseña la pila de directorios." +" La orden interna `dirs' muestra la pila de directorios." -#: builtins/pushd.def:748 +#: builtins/pushd.def:743 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" @@ -787,87 +778,86 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" "Quita entradas de la pila de directorios. Sin argumentos, borra\n" -" directorio techo de la pila, y cambia al nuevo directorio techo.\n" +" el directorio superior de la pila, y cambia al nuevo directorio superior.\n" " \n" " Opciones:\n" -" -n\t suprime el cambio normal de directorio cuando se borran\n" -" \t directorios 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" -" \t la lista mostrada por `dirs', comenzando desde cero.\n" -" \t Por ejemplo: `popd +0' borra el primer directorio, `popd +1'\n" -" \t el segundo.\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" -" \t la lista mostrada por `dirs', comenzando desde cero. Por\n" -" \t ejemplo: `popd -0' borra el último directorio, `popd -1' el\n" -" \t 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" -" El mandato interno `dirs' muestra la pila de directorios." +" La orden interna `dirs' muestra la pila de directorios." -#: builtins/read.def:277 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" -msgstr "%s: tiempo de expiración especificado inválido" +msgstr "%s: especificación del tiempo de expiración inválida" -#: builtins/read.def:729 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "error de lectura: %d: %s" -#: builtins/return.def:68 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" -msgstr "sólo se puede usar `return' desde una función o un guion de origen" +msgstr "sólo se puede usar `return' desde una función o un script leído con `source'" -#: builtins/set.def:834 +#: builtins/set.def:841 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:881 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" -msgstr "%s: no se puede deseleccionar" +msgstr "%s: no se puede borrar" -#: builtins/set.def:902 variables.c:3597 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" -msgstr "%s: no se puede deseleccionar: %s es de solo lectura" +msgstr "%s: no se puede borrar: %s es de solo lectura" -#: builtins/set.def:915 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" -msgstr "%s: no es una variable de unimatriz" +msgstr "%s: no es una variable de matriz" -#: builtins/setattr.def:189 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: no es una función" -#: builtins/setattr.def:194 +#: builtins/setattr.def:196 #, c-format msgid "%s: cannot export" msgstr "%s: no se puede exportar" -# shift: arrastre #: builtins/shift.def:73 builtins/shift.def:79 msgid "shift count" -msgstr "contador de arrastre" +msgstr "contador de desplazamiento" -#: builtins/shopt.def:301 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "no se pueden activar y desactivar opciones del shell simultáneamente" -#: builtins/shopt.def:403 +#: builtins/shopt.def:391 #, 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:128 +#: builtins/source.def:131 msgid "filename argument required" msgstr "argumento de nombre de fichero requerido" -#: builtins/source.def:154 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: no se encontró el fichero" @@ -880,61 +870,61 @@ msgstr "no se puede suspender" msgid "cannot suspend a login shell" msgstr "no se puede suspender un shell de entrada" -#: builtins/type.def:235 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s es un alias de `%s'\n" -#: builtins/type.def:256 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s es una palabra clave del shell\n" -#: builtins/type.def:275 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s: es una función\n" -#: builtins/type.def:299 +#: builtins/type.def:300 #, c-format msgid "%s is a special shell builtin\n" -msgstr "%s: es una shell especial incorporada\n" +msgstr "%s es una función interna de shell especial\n" -#: builtins/type.def:301 +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" -msgstr "%s es un mandato interna del shell\n" +msgstr "%s es una orden interna del shell\n" -#: builtins/type.def:323 builtins/type.def:408 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s is %s\n" -#: builtins/type.def:343 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s está asociado (%s)\n" -#: builtins/ulimit.def:396 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: límite de argumento inválido" -#: builtins/ulimit.def:422 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" -msgstr "`%c': mandato equivocado" +msgstr "`%c': orden incorrecta" -#: builtins/ulimit.def:451 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: no se puede obtener el límite: %s" -#: builtins/ulimit.def:477 +#: builtins/ulimit.def:479 msgid "limit" msgstr "límite" -#: builtins/ulimit.def:489 builtins/ulimit.def:789 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: no se puede modificar el límite: %s" @@ -946,389 +936,375 @@ msgstr "número octal" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "`%c': modo simbólico de operador inválido" +msgstr "`%c': operador de modo simbólico inválido" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "`%c': modo simbólico de carácter inválido" +msgstr "`%c': carácter de modo simbólico inválido" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " línea " -#: error.c:164 +#: error.c:165 #, c-format msgid "last command: %s\n" -msgstr "último mandato: %s\n" +msgstr "última orden: %s\n" -#: error.c:172 +#: error.c:173 #, c-format msgid "Aborting..." msgstr "Abortando..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:287 +#: error.c:288 #, c-format msgid "INFORM: " msgstr "INFORME: " -#: error.c:462 +#: error.c:463 msgid "unknown command error" -msgstr "error de mandato desconocido" +msgstr "error de orden desconocida" -#: error.c:463 +#: error.c:464 msgid "bad command type" -msgstr "tipo de mandato equivocado" +msgstr "tipo de orden incorrecto" -#: error.c:464 +#: error.c:465 msgid "bad connector" -msgstr "conector equivocado" +msgstr "conector erróneo" -#: error.c:465 +#: error.c:466 msgid "bad jump" -msgstr "omisión equivocada" +msgstr "salto erróneo" -#: error.c:503 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: variable sin asignar" -#: eval.c:242 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aha expirado mientras esperaba alguna entrada: auto-logout\n" -#: execute_cmd.c:536 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" -msgstr "no se puede redirigir la salida común desde /dev/null: %s" +msgstr "no se puede redirigir la entrada estándar desde /dev/null: %s" -#: execute_cmd.c:1294 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': carácter de formato inválido" -#: execute_cmd.c:2330 +#: execute_cmd.c:2273 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] aún existe" -#: execute_cmd.c:2456 +#: execute_cmd.c:2377 msgid "pipe error" msgstr "error de tubería" -#: execute_cmd.c:4624 +#: execute_cmd.c:4496 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "eval: evaluación máxima anidando nivel excedido (%d)" +msgstr "eval: nivel máximo de anidamiento de evaluaciones excedido (%d)" -#: execute_cmd.c:4636 +#: execute_cmd.c:4508 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: nivel de origen máximo anidado excedido (%d)" +msgstr "%s: nivel máximo de anidamiento de lecturas con `source' excedido (%d)" -#: execute_cmd.c:4742 +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" -msgstr "%s: función anidada de nivel máximo excedido (%d)" +msgstr "%s: nivel máximo de anidamiento de funciones excedido (%d)" -#: execute_cmd.c:5285 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restringido: no se puede especificar `/' en nombres de órdenes" -#: execute_cmd.c:5383 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" -msgstr "%s: mandato no encontrado" +msgstr "%s: orden no encontrada" -#: execute_cmd.c:5627 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5665 +#: execute_cmd.c:5508 #, 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:5702 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" -msgstr "%s: no puede ejecutar fichero binario: %s" +msgstr "%s: no se puede ejecutar fichero binario: %s" -#: execute_cmd.c:5788 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" -msgstr "`%s': es un constructor especial" +msgstr "`%s': es una orden interna especial" -#: execute_cmd.c:5840 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "no se puede duplicar el df %d al df %d" -#: expr.c:263 +#: expr.c:259 msgid "expression recursion level exceeded" msgstr "se ha excedido el nivel de recursión de la expresión" -#: expr.c:291 +#: expr.c:283 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:453 +#: expr.c:431 msgid "syntax error in expression" msgstr "error sintáctico en la expresión" -#: expr.c:497 +#: expr.c:475 msgid "attempted assignment to non-variable" msgstr "se intentó asignar a algo que no es una variable" -#: expr.c:506 -#, fuzzy -msgid "syntax error in variable assignment" -msgstr "error sintáctico en la expresión" - -#: expr.c:520 expr.c:886 +#: expr.c:495 expr.c:858 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:567 +#: expr.c:542 msgid "bug: bad expassign token" msgstr "defecto: elemento de asignación de expresión erróneo" -#: expr.c:621 +#: expr.c:595 msgid "`:' expected for conditional expression" msgstr "se esperaba `:' para la expresión condicional" -#: expr.c:947 +#: expr.c:919 msgid "exponent less than 0" msgstr "exponente menor que 0" -#: expr.c:1004 +#: expr.c:976 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "" -"se esperaba un identificador después del pre-incremento o pre-decremento" +msgstr "se esperaba un identificador después del pre-incremento o pre-decremento" # falta , singular em+ # mmmh, puede faltar más de un paréntesis cfuga # tiene razón Enrique, es singular. cfuga -#: expr.c:1030 +#: expr.c:1002 msgid "missing `)'" msgstr "falta un `)'" -#: expr.c:1081 expr.c:1458 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "error sintáctico: se esperaba un operando" -#: expr.c:1460 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "error sintáctico: operador aritmético inválido" -#: expr.c:1484 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (el elemento de error es \"%s\")" -#: expr.c:1542 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "base aritmética inválida" -#: expr.c:1562 +#: expr.c:1497 msgid "value too great for base" msgstr "valor demasiado grande para la base" -#: expr.c:1611 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: error de expresión\n" -#: general.c:69 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: no se puede acceder a los directorios padre" -#: input.c:99 subst.c:5858 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "no se puede reestablecer el modo nodelay para el df %d" -#: input.c:266 +#: input.c:271 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "" -"no se puede asignar un nuevo descriptor de fichero para la entrada de bash " -"desde el df %d" +msgstr "no se puede asignar un nuevo descriptor de fichero para la entrada de bash desde el df %d" # buffer: espacio intermedio , alojamiento intermedio ( me gusta menos ) # em+ # almacenamiento intermedio. cfuga -#: input.c:274 +#: input.c:279 #, 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" +msgstr "save_bash_input: el almacenamiento intermedio ya existe para el nuevo df %d" #: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: tubería de pgrp" -#: jobs.c:1080 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" -msgstr "el pid `forked' %d aparece en la tarea en ejecución %d" +msgstr "el pid `forked' %d aparece en el trabajo en ejecución %d" -#: jobs.c:1199 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" -msgstr "borrando la tarea detenida %d con grupo de proceso %ld" +msgstr "borrando el trabajo detenido %d con grupo de proceso %ld" -#: jobs.c:1303 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: el proceso %5ld (%s) en the_pipeline" -#: jobs.c:1306 +#: jobs.c:1261 #, 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:1635 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: no existe tal pid" -#: jobs.c:1650 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Señal %d" -#: jobs.c:1664 jobs.c:1690 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Hecho" -#: jobs.c:1669 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Detenido" -#: jobs.c:1673 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Detenido(%s)" -#: jobs.c:1677 +#: jobs.c:1632 msgid "Running" msgstr "Ejecutando" -#: jobs.c:1694 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Hecho(%d)" -#: jobs.c:1696 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Salida %d" -#: jobs.c:1699 +#: jobs.c:1654 msgid "Unknown status" msgstr "Estado desconocido" -#: jobs.c:1786 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(`core' generado) " -#: jobs.c:1805 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (da: %s)" -#: jobs.c:2033 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid hijo (%ld a %ld)" -#: jobs.c:2395 nojobs.c:657 +#: jobs.c:2347 nojobs.c:654 #, 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:2687 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: No hay un registro del proceso %ld" -#: jobs.c:3048 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" -msgstr "wait_for_job: la tarea %d está detenida" +msgstr "wait_for_job: el trabajo %d está detenido" -#: jobs.c:3355 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" -msgstr "%s: la tarea ha terminado" +msgstr "%s: el trabajo ha terminado" -#: jobs.c:3364 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" -msgstr "%s: la tarea %d ya está en segundo plano" +msgstr "%s: el trabajo %d ya está en segundo plano" -#: jobs.c:3590 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: se activa WNOHANG para evitar el bloque indefinido" -#: jobs.c:4114 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: línea %d: " -#: jobs.c:4128 nojobs.c:900 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (`core' generado)" -#: jobs.c:4140 jobs.c:4153 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(dir ahora: %s)\n" -#: jobs.c:4185 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_jobs_control: falló getpgrp" -#: jobs.c:4241 -#, fuzzy -msgid "initialize_job_control: no job control in background" -msgstr "initialize_jobs_control: disciplina de línea" - -#: jobs.c:4257 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_jobs_control: disciplina de línea" -#: jobs.c:4267 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_jobs_control: setpgid" -#: jobs.c:4288 jobs.c:4297 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "no se puede establecer el grupo de proceso de terminal (%d)" -#: jobs.c:4302 +#: jobs.c:4149 msgid "no job control in this shell" -msgstr "no hay control de tareas en este shell" +msgstr "no hay control de trabajos en este shell" -#: lib/malloc/malloc.c:306 +#: lib/malloc/malloc.c:296 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: falló la aserción: %s\n" -#: lib/malloc/malloc.c:322 +#: lib/malloc/malloc.c:312 #, c-format msgid "" "\r\n" @@ -1337,41 +1313,39 @@ msgstr "" "\r\n" "malloc: %s:%d: aserción arruinada\r\n" -#: lib/malloc/malloc.c:323 +#: lib/malloc/malloc.c:313 msgid "unknown" msgstr "desconocido" -#: lib/malloc/malloc.c:811 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: bloque en la lista libre sobreescrito" -#: lib/malloc/malloc.c:888 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: se llamó con un argumento de bloque previamente liberado" -#: lib/malloc/malloc.c:891 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: se llamó con un argumento de bloque sin asignar" -#: lib/malloc/malloc.c:910 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "" -"free: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" +msgstr "free: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" -#: lib/malloc/malloc.c:916 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" -msgstr "free: los tamaños de los pedazos de inicio y final son diferentes" +msgstr "free: los tamaños de los fragmentos del inicio y del final son diferentes" -#: lib/malloc/malloc.c:1015 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: se llamó con un argumento de bloque sin asignar" -#: lib/malloc/malloc.c:1030 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "" -"realloc: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" +msgstr "realloc: se detectó un desbordamiento por debajo; mh_nbytes fuera de rango" -#: lib/malloc/malloc.c:1036 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: los tamaños de los pedazos de inicio y fin son diferentes" @@ -1413,22 +1387,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:205 +#: locale.c:200 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: no se puede cambiar el local (%s)" -#: locale.c:207 +#: locale.c:202 #, 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:272 +#: locale.c:259 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: no se puede cambiar el local (%s)" -#: locale.c:274 +#: locale.c:261 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: no se puede cambiar el local (%s): %s" @@ -1446,118 +1420,111 @@ 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:317 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "error sintáctico: se requiere una expresión aritmética" -#: make_cmd.c:319 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "error sintáctico: `;' inesperado" -#: make_cmd.c:320 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "error sintáctico: `((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo de instrucción %d erróneo" -#: make_cmd.c:657 +#: make_cmd.c:669 #, 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')" +msgstr "el documento-aquí en la línea %d está delimitado por fin-de-fichero (se esperaba `%s')" -#: make_cmd.c:756 +#: make_cmd.c:768 #, 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" +msgstr "make_redirection: la instrucción de redirección `%d' está fuera de rango" -#: parse.y:2369 +#: parse.y:2324 #, 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" +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:2772 +#: parse.y:2700 msgid "maximum here-document count exceeded" -msgstr "contador máximo aquí-documento excedido" +msgstr "número máximo de documentos en «here--document» excedido" -#: parse.y:3511 parse.y:3881 +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "inesperado FDL mientras se buscaba una coincidencia `%c'" +msgstr "EOF inesperado mientras se buscaba un `%c' coincidente" -#: parse.y:4581 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" -msgstr "inesperado FDL mientras se buscaba `]]'" +msgstr "EOF inesperado mientras se buscaba `]]'" -#: parse.y:4586 +#: parse.y:4415 #, 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:4590 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "error sintáctico en la expresión condicional" -#: parse.y:4668 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "elemento inesperado `%s', se esperaba `)'" -#: parse.y:4672 +#: parse.y:4501 msgid "expected `)'" msgstr "se esperaba `)'" -#: parse.y:4700 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para el operador unario condicional" -#: parse.y:4704 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para el operador unario condicional" -#: parse.y:4750 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "elemento inesperado `%s', se esperaba un operador binario condicional" -#: parse.y:4754 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "se esperaba un operador binario condicional" -#: parse.y:4776 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para el operador binario condicional" -#: parse.y:4780 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para el operador binario condicional" -#: parse.y:4791 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" -msgstr "elemento inesperado `%c' en el mandato condicional" +msgstr "elemento inesperado `%c' en la orden condicional" -#: parse.y:4794 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" -msgstr "elemento inesperado `%s' en el mandato condicional" +msgstr "elemento inesperado `%s' en la orden condicional" -#: parse.y:4798 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" -msgstr "elemento inesperado %d en el mandato condicional" +msgstr "elemento inesperado %d en la orden condicional" # Token: elemento ? # error sintáctico, no se esperaba el símbolo `%c' em+ @@ -1565,12 +1532,12 @@ msgstr "elemento inesperado %d en el mandato 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:6220 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "error sintáctico cerca del elemento inesperado `%s'" -#: parse.y:6238 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "error sintáctico cerca de `%s'" @@ -1579,29 +1546,29 @@ 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:6248 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "error sintáctico: no se esperaba el final del fichero" -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error" msgstr "error sintáctico" -#: parse.y:6310 +#: parse.y:6086 #, 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:6472 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" -msgstr "esperado FDL mientras se buscaba una coincidencia `)'" +msgstr "EOF inesperado mientras se buscaba un `)' coincidente" -#: pcomplete.c:1132 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: función `%s' no encontrada" -#: pcomplete.c:1722 +#: pcomplete.c:1646 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "programmable_completion: %s: posible bucle de reintento" @@ -1611,99 +1578,95 @@ msgstr "programmable_completion: %s: posible bucle de reintento" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: COMPSPEC nulo" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: conector erróneo `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: descriptor de fichero inválido" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" -msgstr "xtrace_set: puntero a fichero NULO" +msgstr "xtrace_set: puntero NULL a fichero" -#: print_cmd.c:382 +#: 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:1538 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': carácter de formato inválido" -#: redir.c:121 redir.c:167 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "descriptor de fichero fuera de rango" -#: redir.c:174 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamiento ambiguo" -#: redir.c:178 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: no se puede sobreescribir un fichero existente" -#: redir.c:183 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restringido: no se puede redirigir la salida" -#: redir.c:188 +#: redir.c:192 #, 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:192 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: no se puede asignar el fd a la variable" -#: redir.c:588 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "no se admite /dev/(tcp|udp)/anfitrion/puerto sin red" -#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "error de redirección: no se puede duplicar el df" -#: shell.c:343 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "¡no se puede encontrar /tmp, crear por favor!" -#: shell.c:347 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp debe ser un nombre de directorio válido" -#: shell.c:798 -msgid "pretty-printing mode ignored in interactive shells" -msgstr "" - -#: shell.c:940 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opción inválida" -#: shell.c:1299 +#: shell.c:1282 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "no se puede establecer el uid %d: uid efectivo %d" -#: shell.c:1306 +#: shell.c:1289 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "no se puede establecer gid a %d: gid efectivo %d" -#: shell.c:1494 +#: shell.c:1458 msgid "cannot start debugger; debugging mode disabled" msgstr "no puede ejecutar el depurador; modo depurado desactivado" -#: shell.c:1608 +#: shell.c:1566 #, c-format msgid "%s: Is a directory" msgstr "%s: es un directorio" @@ -1711,11 +1674,11 @@ 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:1826 +#: shell.c:1777 msgid "I have no name!" msgstr "¡No tengo nombre de usuario!" -#: shell.c:1980 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versión %s-(%s)\n" @@ -1725,62 +1688,58 @@ 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:1981 +#: shell.c:1931 #, 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:1983 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Opciones GNU largas:\n" -#: shell.c:1987 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Opciones del shell:\n" -#: shell.c:1988 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "\t-irsD o -c mandato o -O opción_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:2003 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s o -o opción\n" -#: shell.c:2009 +#: shell.c:1959 #, 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" +msgstr "Teclee `%s -c \"help set\"' para más información sobre las opciones del shell.\n" -#: shell.c:2010 +#: shell.c:1960 #, 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 los mandatos internos del " -"shell.\n" +msgstr "Teclee `%s -c help' para más información sobre las órdenes internas del shell.\n" -#: shell.c:2011 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "Use el mandato `bashbug' para reportar defectos.\n" +msgstr "Utilice la orden `bashbug' para reportar defectos.\n" -#: shell.c:2013 +#: shell.c:1963 #, c-format msgid "bash home page: \n" msgstr "página inicial bash: \n" -#: shell.c:2014 +#: shell.c:1964 #, c-format msgid "General help using GNU software: \n" msgstr "Ayuda general utilizando software GNU: \n" -#: sig.c:695 +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operación inválida" @@ -1839,7 +1798,7 @@ msgstr "Violación de segmento" # llamada a la función del sistema, no la llamada en sí cfuga #: siglist.c:99 msgid "Bad system call" -msgstr "Llamada al sistema equivocada" +msgstr "Llamada al sistema errónea" # (pipe) no, por favor. Esto ya está traducido en libc, así que a estas # alturas, la gente ya debería saber qué es eso de la tubería. sv @@ -1950,7 +1909,7 @@ msgstr "el modo monitor HTF ha sido retirado" #: siglist.c:211 msgid "HFT sound sequence has completed" -msgstr "la secuencia sonora HFT ha sido completada" +msgstr "la secuencia de sonido HFT ha sido completada" #: siglist.c:215 msgid "Information request" @@ -1965,21 +1924,21 @@ msgstr "Señal Desconocida #" msgid "Unknown Signal #%d" msgstr "Señal Desconocida #%d" -#: subst.c:1450 subst.c:1641 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" -msgstr "sustitución equivocada: no hay un `%s' que cierre en %s" +msgstr "sustitución errónea: no hay un `%s' que cierre en %s" -#: subst.c:3209 +#: subst.c:3154 #, 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:5734 subst.c:5750 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "no se puede crear la tubería para la sustitución del proceso" -#: subst.c:5796 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "no se puede crear un proceso hijo para la sustitución del proceso" @@ -1998,76 +1957,67 @@ msgstr "no se puede abrir la tubería llamada %s para escritura" msgid "cannot duplicate named pipe %s as fd %d" msgstr "no se puede duplicar la tubería llamada %s como df %d" -#: subst.c:5990 +#: subst.c:5959 msgid "command substitution: ignored null byte in input" -msgstr "sustitución mandato: ignorado byte nulo en entrada" +msgstr "sustitución de orden: se ignora byte nulo en la entrada" -#: subst.c:6121 +#: subst.c:6083 msgid "cannot make pipe for command substitution" -msgstr "no se puede crear la tubería para la sustitución del mandato" +msgstr "no se puede crear la tubería para la sustitución de la orden" -#: subst.c:6164 +#: subst.c:6127 msgid "cannot make child for command substitution" -msgstr "no se puede crear un proceso hijo para la sustitución del mandato" +msgstr "no se puede crear un proceso hijo para la sustitución de la orden" -#: subst.c:6190 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: no se puede duplicar la tubería como df 1" -#: subst.c:6641 subst.c:9483 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "%s: nombre variable inválido para referencia de nombre" +msgstr "%s: nombre de variable inválido para referencia de nombre" -#: subst.c:6737 subst.c:6755 subst.c:6903 +#: subst.c:6666 subst.c:8351 subst.c:8371 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: sustitución errónea" + +#: subst.c:6800 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: expansión indirecta inválida" -#: subst.c:6771 subst.c:6910 +#: subst.c:6807 #, c-format msgid "%s: invalid variable name" -msgstr "%s: nombre de variable no válida" - -#: subst.c:6962 -#, fuzzy, c-format -msgid "%s: parameter not set" -msgstr "%s: parámetro nulo o no establecido" +msgstr "%s: nombre de variable inválido" -#: subst.c:6964 +#: subst.c:6854 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parámetro nulo o no establecido" -#: subst.c:7201 subst.c:7216 +#: subst.c:7089 subst.c:7104 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expresión de subcadena < 0" -#: subst.c:8839 subst.c:8860 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: sustitución errónea" - -#: subst.c:8948 +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: no se puede asignar de esta forma" -#: subst.c:9346 -msgid "" -"future versions of the shell will force evaluation as an arithmetic " -"substitution" -msgstr "" -"versiones futuras del intérprete obligarán la evaluación como una " -"sustitución aritmética" +#: subst.c:8802 +msgid "future versions of the shell will force evaluation as an arithmetic substitution" +msgstr "versiones futuras del intérprete obligarán la evaluación como una sustitución aritmética" -#: subst.c:9903 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" -msgstr "sustitución equivocada: no hay una \"`\" que cierre en %s" +msgstr "sustitución errónea: no hay una \"`\" que cierre en %s" -#: subst.c:10907 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "no hay coincidencia: %s" @@ -2090,12 +2040,12 @@ msgstr "`)' esperado" msgid "`)' expected, found %s" msgstr "se esperaba `)', se encontró %s" -#: test.c:282 test.c:748 test.c:751 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: se esperaba un operador unario" -#: test.c:469 test.c:791 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: se esperaba un operador binario" @@ -2107,115 +2057,106 @@ 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:873 +#: test.c:869 msgid "missing `]'" msgstr "falta un `]'" -#: trap.c:216 +#: trap.c:224 msgid "invalid signal number" msgstr "número de señal inválido" -#: trap.c:379 +#: trap.c:387 #, 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:383 +#: trap.c:391 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "" -"run_pending_traps: el manejador de señal es SIG_DFL, reenviando %d (%s) a mí " -"mismo" +msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: el manejador de señal es SIG_DFL, reenviando %d (%s) a mí mismo" -#: trap.c:439 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: señal errónea %d" -#: variables.c:399 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "error al importar la definición de la función para `%s'" -#: variables.c:801 +#: variables.c:814 #, 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:2512 +#: variables.c:2413 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:2531 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: variable quizá no es valor asignado" -#: variables.c:3246 +#: variables.c:3043 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: asignando entero a nombre referencia" -#: variables.c:4149 +#: variables.c:3940 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:4437 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s tiene exportstr nulo" -#: variables.c:4442 variables.c:4451 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter inválido %d en exportstr para %s" -#: variables.c:4457 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "no hay `=' en exportstr para %s" -#: variables.c:4911 +#: variables.c:4684 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" +msgstr "pop_var_context: la cabeza de shell_variables no es un contexto de función" -#: variables.c:4924 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: no es un contexto global_variables" -#: variables.c:4999 +#: variables.c:4772 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" +msgstr "pop_scope: la cabeza de shell_variables no es un ámbito de entorno temporal" -#: variables.c:5862 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: no se puede abrir como FICHERO" -#: variables.c:5867 +#: variables.c:5624 #, 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:5912 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: valor de compatibilidad fuera del rango" #: version.c:46 version2.c:46 msgid "Copyright (C) 2016 Free Software Foundation, Inc." -msgstr "© 1999 Free Software Foundation, Inc." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" -"Licencia GPLv3+: GPL de GNU versión 3 o posterior \n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "Licencia GPLv3+: GPL de GNU versión 3 o posterior \n" #: version.c:86 version2.c:86 #, c-format @@ -2230,22 +2171,22 @@ msgstr "Esto es software libre, es libre para modificar y redistribuirlo." msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "No hay NINGUNA GARANTÍA, a la extensión permitida por la ley." -#: xmalloc.c:93 +#: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: no se pueden asignar %lu bytes (%lu bytes asignados)" -#: xmalloc.c:95 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: no se pueden asignar %lu bytes" -#: xmalloc.c:165 +#: xmalloc.c:163 #, 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:167 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: no se pueden asignar %lu bytes" @@ -2259,13 +2200,8 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] nombre [nombre ...]" #: 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 comb_teclas] [-f fichero] [-q nombre] [-u nombre] [-r " -"secteclas] [-x secteclas:mandato-shell] [secteclas:función-leerlinea o " -"mandato-leerlinea]" +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 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]" @@ -2277,7 +2213,7 @@ msgstr "continue [n]" #: builtins.c:60 msgid "builtin [shell-builtin [arg ...]]" -msgstr "builtin [mandato-interno-shell [arg ...]]" +msgstr "builtin [orden-interna-shell [arg ...]]" #: builtins.c:63 msgid "caller [expr]" @@ -2293,7 +2229,7 @@ msgstr "pwd [-LP]" #: builtins.c:76 msgid "command [-pVv] command [arg ...]" -msgstr "command [-pVv] mandato [arg ...]" +msgstr "command [-pVv] orden [arg ...]" #: builtins.c:78 msgid "declare [-aAfFgilnrtux] [-p] [name[=value] ...]" @@ -2329,7 +2265,7 @@ msgstr "getopts cadena_opciones nombre [arg]" #: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -msgstr "exec [-cl] [-a nombre] [mandato [argumentos ...]] [redirección ...]" +msgstr "exec [-cl] [-a nombre] [orden [argumentos ...]] [redirección ...]" #: builtins.c:100 msgid "exit [n]" @@ -2341,15 +2277,15 @@ 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] o fc -s [pat=rep] [mandato]" +msgstr "fc [-e nombre_e] [-lnr] [primero] [último] o fc -s [pat=rep] [orden]" #: builtins.c:109 msgid "fg [job_spec]" -msgstr "fg [id_tarea]" +msgstr "fg [id_trabajo]" #: builtins.c:113 msgid "bg [job_spec ...]" -msgstr "bg [id_tarea ...]" +msgstr "bg [id_trabajo ...]" #: builtins.c:116 msgid "hash [-lr] [-p pathname] [-dt] [name ...]" @@ -2360,12 +2296,8 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [patrón ...]" #: builtins.c:123 -msgid "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " -"[arg...]" -msgstr "" -"history [-c] [-d despl] [n] o history -anrw [fichero] o history -ps arg " -"[arg...]" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "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 # el nombre de la orden que se creo con el proceso em+ @@ -2373,32 +2305,24 @@ msgstr "" # mucho. ¿Sugerencias? cfuga #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" -msgstr "jobs [-lnprs] [tarea_id ...] o jobs -x mandato [args]" +msgstr "jobs [-lnprs] [idtrabajo ...] o jobs -x orden [args]" # lo mismo em+ #: builtins.c:131 msgid "disown [-h] [-ar] [jobspec ... | pid ...]" -msgstr "disown [-h] [-ar] [idtarea ... | pid ...]" +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 | idtarea ... o kill -l " -"[id_señal]" +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 ... o kill -l [id_señal]" #: 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 tiempo] [-u df] [nombre ...]" +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 tiempo] [-u df] [nombre ...]" #: builtins.c:140 msgid "return [n]" @@ -2461,8 +2385,7 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [modo]" #: builtins.c:177 -#, fuzzy -msgid "wait [-fn] [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2471,15 +2394,15 @@ msgstr "wait [pid ...]" #: builtins.c:184 msgid "for NAME [in WORDS ... ] ; do COMMANDS; done" -msgstr "for NOMBRE [in PALABRAS ... ] ; do MANDATOS; done" +msgstr "for NOMBRE [in PALABRAS ... ] ; do ÓRDENES; done" #: builtins.c:186 msgid "for (( exp1; exp2; exp3 )); do COMMANDS; done" -msgstr "for (( exp1; exp2; exp3 )); do MANDATOS; done" +msgstr "for (( exp1; exp2; exp3 )); do ÓRDENES; done" #: builtins.c:188 msgid "select NAME [in WORDS ... ;] do COMMANDS; done" -msgstr "select NOMBRE [in PALABRAS ... ;] do MANDATOS; done" +msgstr "select NOMBRE [in PALABRAS ... ;] do ÓRDENES; done" #: builtins.c:190 msgid "time [-p] pipeline" @@ -2487,39 +2410,35 @@ msgstr "time [-p] tubería" #: builtins.c:192 msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" -msgstr "case PALABRA in [PATRÓN [| PATRÓN]...) MANDATOS ;;]... esac" +msgstr "case PALABRA in [PATRÓN [| PATRÓN]...) ÓRDENES ;;]... esac" #: builtins.c:194 -msgid "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" -msgstr "" -"if MANDATOS; then MANDATOS; [ elif MANDATOS; then MANDATOS; ]...[ else " -"MANDATOS; ] fi" +msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgstr "if ÓRDENES; then ÓRDENES; [ elif ÓRDENES; then ÓRDENES; ]...[ else ÓRDENES; ] fi" #: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" -msgstr "while MANDATOS; do MANDATOS; done" +msgstr "while ÓRDENES; do ÓRDENES; done" #: builtins.c:198 msgid "until COMMANDS; do COMMANDS; done" -msgstr "until MANDATOS; do MANDATOS; done" +msgstr "until ÓRDENES; do ÓRDENES; done" #: builtins.c:200 msgid "coproc [NAME] command [redirections]" -msgstr "coproc [NOMBRE] mandato [redirecciones]" +msgstr "coproc [NOMBRE] orden [redirecciones]" #: builtins.c:202 msgid "function name { COMMANDS ; } or name () { COMMANDS ; }" -msgstr "function nombre { MANDATOS ; } ó nombre () { MANDATOS ; }" +msgstr "function nombre { ÓRDENES ; } o nombre () { ÓRDENES ; }" #: builtins.c:204 msgid "{ COMMANDS ; }" -msgstr "{ MANDATOS ; }" +msgstr "{ ÓRDENES ; }" #: builtins.c:206 msgid "job_spec [&]" -msgstr "id_tarea [&]" +msgstr "id_trabajo [&]" #: builtins.c:208 msgid "(( expression ))" @@ -2554,44 +2473,24 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] formato [argumentos]" #: builtins.c:231 -msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-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 opción] [-A acción] [-G patglob] [-" -"W listapalabras] [-F función] [-C mandato] [-X patfiltro] [-P prefijo] [-S " -"sufijo] [nombre ...]" +msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-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 opción] [-A acción] [-G patglob] [-W listapalabras] [-F función] [-C orden] [-X patfiltro] [-P prefijo] [-S sufijo] [nombre ...]" #: 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 opción] [-A acción] [-G patglob] [-W " -"listapalabras] [-F función] [-C mandato] [-X patfiltro] [-P prefijo] [-S " -"sufijo] [palabra]" +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ón] [-A acción] [-G patglob] [-W listapalabras] [-F función] [-C orden] [-X patfiltro] [-P prefijo] [-S sufijo] [palabra]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o opción] [-DE] [nombre ...]" #: 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 cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C " -"llamada] [-c quantum] [matriz]" +msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "mapfile [-d delim] [-n cuenta] [-O origen] [-s cuenta] [-t] [-u df] [-C llamada] [-c quantum] [matriz]" #: builtins.c:244 -#, fuzzy -msgid "" -"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]" +msgid "readarray [-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]" # Más en español sería: se define un alias por cada NOMBRE cuyo VALOR se da. sv # Lo mismo de antes: el alias es expandido -> el alias se expande. sv @@ -2612,25 +2511,24 @@ msgid "" " -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" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" -"Define o enseña aliases.\n" +"Define o muestra alias.\n" " \n" -" Sin argumentos `alias' escribe la lista de aliases en formato\n" -" reutilizable `alias NOMBRE=VALOR' en la salida común.\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 @@ -2663,76 +2561,65 @@ msgid "" " 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" +" 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" +" -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" +" -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" +" -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 "" -"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 este mandato. 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 Lista los nombres de las funciones.\n" " -P Lista los nombres de las funciones y asignaciones.\n" -" -p Lista las funciones y asignaciones en una forma " -"que\n" -" se puede reusar como entrada.\n" +" -p Lista las funciones y asignaciones de tal forma que\n" +" se pueda ruutilizar como entrada.\n" " -S Lista las secuencias de teclas que invocan macros\n" " y sus valores.\n" " -s Lista las secuencias de teclas que invocan macros\n" -" y sus valores en una forma que se pueden reusar " -"como\n" +" y sus valores en una forma que se pueden reutilizar como\n" " entrada.\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 reusar como entrada.\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" " -f fichero Lee las asignaciones de teclas del FICHERO.\n" -" -x secteclas:mandato-shell\tCausa que se ejecute el MANDATO-SHELL " -"cuando\n" +" -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." @@ -2746,12 +2633,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 @@ -2764,11 +2651,10 @@ 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 " -"circundante.\n" +" 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." @@ -2779,24 +2665,22 @@ msgid "" " \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" +" 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 "" -"Ejecuta mandatos internos del shell\n" +"Ejecuta órdenes internas del shell\n" " \n" -" Ejecuta el MANDATO-INTERNA-SHELL con los argumentos ARGs sin realizar\n" -" la búsqueda interna de mandatos. Esto es útil cuando desea " -"reimplementar\n" -" un mandato interno del shell como una función de shell, pero necesita\n" -" ejecutar el mandato interno dentro de la función.\n" +" 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 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" -" Devuelve el estado de salida del MANDATO-INTERNA-SHELL, o falso si la\n" -" ORDEN-INTERNA-SHELL no es un mandato interno de shell." +" Devuelve el estado de salida de la ORDEN-INTERNA-SHELL, o falso si la\n" +" ORDEN-INTERNA-SHELL no es una orden interna de shell." #: builtins.c:369 msgid "" @@ -2817,9 +2701,9 @@ 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" +" 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" @@ -2833,22 +2717,16 @@ msgstr "" msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\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" +" 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" +" 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" @@ -2864,21 +2742,19 @@ msgid "" " \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" +" `..' 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" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" -"Modifica el directorio de tarea del shell.\n" +"Modifica el directorio de trabajo del shell.\n" " \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" @@ -2886,20 +2762,23 @@ 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\t fuerza a seguir los enlaces simbólicos\n" -" -P\t usa la estructura física de directorios sin seguir los enlaces\n" -" \t\tsimbólicos\n" -" -e\t si se da la opción -P, y el directorio actual de tarea no se\n" -" \t\t puede 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" +" 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." @@ -2918,11 +2797,11 @@ msgid "" " Returns 0 unless an invalid option is given or the current directory\n" " cannot be read." msgstr "" -"Escribe el nombre del directorio de trabajo actual.\n" +"Muestra el nombre del directorio de trabajo actual.\n" " \n" " Opciones:\n" " -L\tmuestra el valor de $PWD si nombra al directorio de\n" -" \ttarea actual\n" +" \ttrabajo actual\n" " -P\tmuestra el directorio físico, sin enlaces simbólicos\n" " \n" " Por defecto, `pwd' se comporta como si se especificara `-L'.\n" @@ -2942,10 +2821,10 @@ msgid "" msgstr "" "Orden nula.\n" " \n" -" Sin efecto; el mandato no hace nada.\n" +" Sin efecto; la orden no hace nada.\n" " \n" " Estado de Salida:\n" -" Siempre con éxito." +" Siempre correcto." #: builtins.c:453 msgid "" @@ -2956,7 +2835,7 @@ msgid "" msgstr "" "Devuelve un resultado correcto.\n" " \n" -" Estado de salida:\n" +" Estado de Salida:\n" " Siempre correcto." #: builtins.c:462 @@ -2968,7 +2847,7 @@ msgid "" msgstr "" "Devuelve un resultado incorrecto.\n" " \n" -" Estado de salida:\n" +" Estado de Salida:\n" " Siempre incorrecto." #: builtins.c:471 @@ -2976,8 +2855,7 @@ 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" +" 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" @@ -2989,29 +2867,25 @@ msgid "" " Exit Status:\n" " Returns exit status of COMMAND, or failure if COMMAND is not found." msgstr "" -"Ejecuta un mandato simple o enseña información sobre mandatos.\n" +"Ejecuta una orden simple o muestra información sobre órdenes.\n" " \n" -" Ejecuta el MANDATO con ARGumentos, suprimiendo la búsqueda de funciones\n" -" de shell, o muestra información sobre las MANDATOs especificados. Se " -"puede\n" -" usar para invocar mandatos en disco cuando existe una función con el " -"mismo\n" +" Ejecuta la ORDEN con ARGumentos, suprimiendo la búsqueda de funciones\n" +" 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 emplee un valor predeterminado para rutas PATH para garantizar " -"que\n" -" encuentre todas las utilidades comunes\n" -" -v escribe una descripción del MANDATO similar al mandato\n" -" interna `type'\n" -" -V escribe una descripción más detallada de cada MANDATO\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 del MANDATO, o falla si no se encuentra\n" -" el MANDATO." +" Devuelve el estado de salida de la ORDEN, o fallo si no se encuentra\n" +" la ORDEN." #: builtins.c:490 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -3030,11 +2904,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 the value of each NAME to lower case on assignment\n" +" -l\tto convert NAMEs 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" +" -u\tto convert NAMEs to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3042,8 +2916,7 @@ msgid "" " 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" +" 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" @@ -3056,36 +2929,36 @@ msgstr "" " muestra los atributos y valores de todas las variables.\n" " \n" " Opciones:\n" -" -f\t restringe la acción o muestra a nombres y definiciones\n" -" \t de funciones\n" -" -F\t restringe la muestra a nombres de funciones (con número de\n" -" \t línea y fichero fuente al depurar)\n" -" -g\t crea variables globales cuando se usa en una función de shell;\n" -" \t de otra forma se descarta\n" -" -p\t enseña los atributos y valor de cada NOMBRE\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" +" \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\t establece NOMBREs como matrices indizadas (si se admiten)\n" -" -A\t establece NOMBREs como matrices asociativas (si se admiten)\n" -" -i\t establece NOMBREs con el atributo `integer'\n" -" -l\t convierte NOMBREs a minúsculas en la asignación\n" -" -r\t crea NOMBREs como de sólo lectura\n" -" -t\t crea NOMBREs con el atributo `trace'\n" -" -u\t convierte NOMBREs a mayúsculas en la asignación\n" -" -x\t crea NOMBREs para exportar\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\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\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" -" (vea el mandato `let') cuando se asigna un valor a la variable.\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" -" como sucede con el mandato `local'. La opción `-g' suprime esta\n" +" como sucede con la orden `local'. La opción `-g' suprime esta\n" " conducta.\n" " \n" " Estado de Salida:\n" " Devuelve correcto a menos que se dé una opción inválida o\n" -" suceda un error." +" suceda un error de asignación de variable." #: builtins.c:530 msgid "" @@ -3093,9 +2966,9 @@ msgid "" " \n" " A synonym for `declare'. See `help declare'." msgstr "" -"Establece valores variables y atributos.\n" +"Establece valores de variables y atributos.\n" " \n" -" Un sinónimo para `declare'. Vea `help declare'." +" Sinónimo de `declare'. Vea `help declare'." #: builtins.c:538 msgid "" @@ -3116,19 +2989,18 @@ 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" -" sólo en la función donde se definen y sus descendientes.\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 correcto 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 msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by " -"a\n" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3156,36 +3028,36 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -"Escribe argumentos en la salida común.\n" +"Escribe argumentos en la salida estándar.\n" " \n" -" Enseña los ARGumentos en la salida común seguidos por un carácter\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" -" \t\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" -" \t\tde escape 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" +" \t\tescape de barra invertida\n" +" \n" +" `echo' interpreta los siguientes caracteres de escape de barra invertida:\n" +" \\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 carácter de ocho bits cuyo valor es HH (hexadecimal). HH\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" +" Estado de Salida:\n" " Devuelve correcto a menos que suceda un error de escritura." #: builtins.c:591 @@ -3200,14 +3072,14 @@ msgid "" " Exit Status:\n" " Returns success unless a write error occurs." msgstr "" -"Escribe argumentos en la salida común.\n" +"Escribe argumentos en la salida estándar.\n" " \n" -" Enseña los ARGumentos en la salida común seguidos por un carácter\n" +" Muestra los ARGumentos en la salida estándar seguidos por un carácter\n" " de fin de línea.\n" " Opciones:\n" " -n\tno agrega un carácter de fin de línea\n" " \n" -" Estado de salida:\n" +" Estado de Salida:\n" " Devuelve correcto a menos que suceda un error de escritura." #: builtins.c:606 @@ -3236,54 +3108,49 @@ msgid "" " Exit Status:\n" " Returns success unless NAME is not a shell builtin or an error occurs." msgstr "" -"Activa y desactiva los mandatos internos del shell.\n" +"Activa y desactiva las órdenes internas del shell.\n" " \n" -" Activa y desactiva los mandatos internos del shell. El desactivar le\n" -" permite ejecutar un mandato del disco que tenga el mismo nombre que\n" -" el mandato interno del shell, sin usar el nombre de ruta completo.\n" +" Activa y desactiva las órdenes internas del shell. El desactivar le\n" +" permite ejecutar una orden del disco que tenga el mismo nombre que\n" +" la orden interna del shell, sin usar el nombre de ruta completo.\n" " \n" " Opciones:\n" -" -a\t escribe la lista de mandatos internos indicando si están activas " -"o no\n" -" -n\t desactiva cada NOMBRE o muestra la lista de mandatos internos\n" -" \t desactivadas\n" -" -p\t escribe la lista de mandatos internos en una forma reusable\n" -" -s\t escribe sólo los nombres de los mandatos internos `especiales' " -"Posix\n" +" -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" +" \t\tdesactivadas\n" +" -p\tmuestra la lista de órdenes internas en una forma reusable\n" +" -s\tmuestra solo los nombres de las órdenes internas `especiales' Posix\n" " \n" " Opciones que controlan la carga dinámica:\n" -" -f\t carga interna de NOMBRE desde objeto compartido FICHERO\n" -" -d\t borra un mandato interno cargado 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 del mandato interno\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 correcto a menos que NOMBRE no sea un mandato interno del " -"shell\n" +" Devuelve correcto a menos que NOMBRE no sea una orden interna del shell\n" " o suceda un error." #: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\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 "" -"Ejecuta argumentos como un mandato de shell.\n" +"Ejecuta argumentos como una orden de shell.\n" " \n" -" Combina los ARGumentos en una sola cadena, usa el resultado como " -"entrada\n" -" para el shell, y ejecuta los mandatos resultantes.\n" +" Combina los ARGumentos en una sola cadena, usa el resultado como entrada\n" +" para el shell, y ejecuta las órdenes resultantes.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado de salida del mandato o éxito si el mandato es nula." +" Devuelve el estado de salida de la orden o éxito si la orden es nula." # "a ser reconocidas" no está en español. # Yo pondría "las letras de opción que se reconocen". sv @@ -3375,8 +3242,7 @@ 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" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3384,32 +3250,28 @@ msgid "" " -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" +" 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." +" Returns success unless COMMAND is not found or a redirection error occurs." msgstr "" -"Reemplaza el shell con el mandato dada.\n" +"Reemplaza el shell con la orden dada.\n" " \n" -" Ejecuta el MANDATO, reemplazando este shell con el programa " -"especificado.\n" -" Los ARGUMENTOS se vuelven los argumentos del MANDATO. Si no se\n" -" especifica el MANDATO, cualquier redirección toma efecto en el shell " -"actual.\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, cualquier redirección toma efecto en el shell actual.\n" " \n" " Opciones:\n" -" -a nombre\tpasa el NOMBRE como el argumento cero del MANDATO\n" -" -c\tejecuta el MANDATO en un ambiente vacío\n" -" -l\tcoloca un guion en el argumento cero del MANDATO\n" +" -a nombre\tpasa el NOMBRE como 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 el mandato no se puede ejecutar, termina un shell no interactivo,\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" " \n" " Estado de Salida:\n" -" Devuelve éxito a menos que no se encuentre el MANDATO o que suceda un\n" +" Devuelve éxito a menos que no se encuentre la ORDEN o que suceda un\n" " error de redirección." #: builtins.c:709 @@ -3421,16 +3283,14 @@ msgid "" msgstr "" "Termina el shell.\n" " \n" -" Termina el shell con un estado de N. Si se omite N, el estado de " -"salida\n" -" es el mismo del último mandato ejecutado." +" Termina el shell con un estado de N. Si se omite N, el estado de salida\n" +" es el mismo de la última orden ejecutada." #: builtins.c:718 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" "Termina un shell de entrada.\n" @@ -3442,15 +3302,13 @@ msgstr "" 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" +" 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" +" -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" @@ -3464,33 +3322,30 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" Returns success or status of executed command; non-zero if an error occurs." msgstr "" -"Enseña 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 re-ejecutar mandatos de la lista de\n" -" historia. PRIMERO y ÚLTIMO pueden ser números que especifican el " -"rango,\n" -" o PRIMERO puede ser una cadena, que significa el mandato más reciente " -"que\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" -" \t\t tras 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 invierte el orden de las líneas (listados primero más recientes)\n" +" -e NOMBRE_E\tselecciona el editor a usar. Por defecto es FCEDIT,\n" +" \t\tdespués EDITOR, después vi\n" +" -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]', el MANDATO se\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" -" `r cc' ejecuta el último mandato que comience con `cc' y al teclear\n" -" `r' re-ejecuta el último mandato.\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' reejecuta la última orden.\n" " \n" " Estado de Salida:\n" -" Devuelve correcto o el estado del mandato ejecutado; 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 @@ -3504,37 +3359,34 @@ msgid "" " Exit Status:\n" " Status of command placed in foreground, or failure if an error occurs." msgstr "" -"Mueve la tarea al primer plano.\n" +"Mueve el trabajo al primer plano.\n" " \n" -" Ubica a la tarea identificada con IDTAREA en el plano principal, y\n" -" lo hace la tarea actual. Si IDTAREA no está presente, se usa\n" -" la noción del shell de tarea actual.\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 mandato ubicado en primer plano, o falla si sucede un " -"error." +" El estado de la orden ubicada en primer plano, o falla si sucede un error." #: builtins.c:773 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" +" 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 "" -"Mueve tareas al segundo plano.\n" +"Mueve trabajos al segundo plano.\n" " \n" -" Coloca las tareas identificados por cada JOB_SPEC en segundo plano,\n" -" como si se hubieran iniciado con `&'. Si JOB_SPEC no está presente,\n" -" se usa la noción del shell de la tarea actual.\n" +" Coloca los trabajos identificados por cada IDTRABAJO en segundo plano,\n" +" como si se hubieran iniciado con `&'. Si IDTRABAJO no está presente,\n" +" se usa la noción del shell del trabajo actual.\n" " \n" " Estado de Salida:\n" -" Devuelve correcto a menos que el control de tareas 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 @@ -3542,8 +3394,7 @@ 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" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3567,15 +3418,15 @@ 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" @@ -3583,7 +3434,6 @@ msgstr "" " una opción inválida." #: builtins.c:812 -#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3598,17 +3448,16 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifying a help topic\n" +" PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" -"Enseña información sobre órdenes internas.\n" +"Muestra información sobre órdenes internas.\n" " \n" -" Enseña un resumen breve de los mandatos internos. Si se especifica\n" -" un PATRÓN, da ayuda detallada sobre todas los mandatos que\n" -" coincidan con el PATRÓN, de otra forma se muestra la lista de\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; en caso contrario, se muestra la lista de\n" " tópicos de ayuda.\n" " \n" " Opciones:\n" @@ -3625,7 +3474,6 @@ msgstr "" " una opción inválida." #: builtins.c:836 -#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3634,8 +3482,7 @@ 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. Negative\n" -" \t\toffsets count back from the end of the history list\n" +" -d offset\tdelete the history entry at position 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" @@ -3653,24 +3500,22 @@ msgid "" " \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" +" 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 "" -"Enseña o manipula la lista de la historia.\n" +"Muestra o manipula la lista de la historia.\n" " \n" -" Enseña la lista de la historia con números de línea, mostrando\n" -" cada línea modificada con un `*' como prefijo. Un argumento\n" -" de N lista solamente las últimas N entradas.\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 historia en la posición DESPL\n" " \n" -" -a\tagrega las líneas de historia de esta sesión al fichero de " -"historia\n" +" -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" " -r\tlee el fichero de historia y agrega el contenido al fichero\n" @@ -3691,11 +3536,10 @@ msgstr "" " tiempo asociada con cada entrada de historia mostrada. No se muestra\n" " 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 " -"erroe." +" Estado de Salida:\n" +" Devuelve correcto a no ser que se dé una opción inválida u ocurra un error." -#: builtins.c:873 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3718,30 +3562,29 @@ 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 "" -"Enseña el estado de las tareas.\n" +"Muestra el estado de los trabajos.\n" " \n" -" Muestra las tareas activas. JOBSPEC restringe la salida a\n" -" esa tarea. Sin opciones, se enseña el estado de todas las tareas\n" -" activas.\n" +" Muestra los trabajos activos. IDTRABAJO restringe la salida a\n" +" esa trabajo. Sin opciones, se muestra el estado de todas los trabajos\n" +" activos.\n" " \n" " Opciones:\n" -" -l\t muestra los IDs de los procesos, además\n" -" \t de la información común\n" -" -n\t solo muestra los procesos que han cambia de estado desde\n" -" \t la última notificación\n" -" -p\t solo muestra los id de los procesos\n" -" -r\t restringe la salida a las tareas en ejecución\n" -" -s\t restringe la salida a las tareas detenidos\n" -" \n" -" Si se especifica -x, el MANDATO se ejecuta después de que todas las\n" -" especificaciones de tarea que aparecen en ARGS se han reemplazado\n" -" con el ID de proceso del líder del grupo de procesos de dicha tarea.\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 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 correcto a menos que se de una opción inválida o suceda un\n" -" error. Si se usa -x, devuelve el estado de salida del MANDATO." +" 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:900 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3757,22 +3600,22 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option or JOBSPEC is given." msgstr "" -"Quita tareas del shell actual.\n" +"Quita trabajos del shell actual.\n" " \n" -" Quita cada argumento IDTAREA de la distribución de tareas activas. Sin\n" -" algún IDTAREA, el shell utiliza su noción del tarea 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\t quita todas las tareas si no se proporciona IDTAREAS\n" -" -h\t marca cada IDTAREA para no se envíe SIGHUP a la tarea\n" -" \t\t si el shell recibe un SIGHUP\n" -" -r\t quita solo las tareas 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 correcto a menos que se proporcionen una opción o\n" -" una IDTAREA inválida." +" un IDTRABAJO inválida." -#: builtins.c:919 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3794,27 +3637,26 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given or an error occurs." msgstr "" -"Envía una señal a una tarea.\n" +"Envía una señal a una trabajo.\n" " \n" -" Envía a los procesos nombrados por PID (o IDTAREA) la señal ID_SEÑAL\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" " SIGTERM.\n" " \n" " Opciones:\n" -" -s sig\t SIG es un nombre de señal\n" -" -n sig\t SIG es un número de señal\n" -" -l\t lista 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" +" -s sig\tSIG es un nombre de señal\n" +" -n sig\tSIG es un número de señal\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 un mandato interno del shell por dos razones: permite que se\n" -" puedan utilizar varios ID de tareas en lugar de varios ID de proceso,\n" -" y permite matar procesos si ha alcanzado el límite de procesos que\n" -" puede crear.\n" +" Kill es una orden interna del shell por dos razones: permite que se\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 correcto a menos que se de una opción inválida o suceda un " -"error." +" 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 # Cierto. ¿Así está mejor? cfuga @@ -3824,15 +3666,14 @@ 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:943 +#: builtins.c:942 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" +" 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" @@ -3872,31 +3713,30 @@ msgstr "" " \n" " Evalúa cada ARG como una expresión aritmética. La evaluación se hace\n" " 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 " -"lista\n" -" de operadores está agrupada en niveles de operadores de la misma\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. 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" " \t-, +\t\tmenos, más unario\n" -" \t!, ~\t\t negación lógica y basada en bits\n" -" \t**\t\t exponenciación\n" -" \t*, /, %\t\t multiplicación, división, residuo\n" -" \t+, -\t\t adición, sustracción\n" -" \t<<, >>\t\t desplazamientos de varios bit izquierdo y derecho\n" -" \t<=, >=, <, >\t comparación\n" -" \t==, !=\t\t equivalencia, inequivalencia\n" -" \t&\t\t Y de varios bit\n" -" \t^\t\tXO de varios bit\n" -" \t|\t\tO de varios bit\n" -" \t&&\t\t Y lógico\n" -" \t||\t\t O lógico\n" +" \t!, ~\t\tnegación lógica y basada en bits\n" +" \t**\t\texponenciación\n" +" \t*, /, %\t\tmultiplicación, división, residuo\n" +" \t+, -\t\tadición, sustracción\n" +" \t<<, >>\t\tdesplazamientos de varios bit izquierdo y derecho\n" +" \t<=, >=, <, >\tcomparación\n" +" \t==, !=\t\tequivalencia, inequivalencia\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" -" \t\t\t operador condicional\n" +" \t\t\toperador condicional\n" " \t=, *=, /=, %=,\n" " \t+=, -=, <<=, >>=,\n" -" \t&=, ^=, |=\t asignación\n" +" \t&=, ^=, |=\tasignación\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" @@ -3908,39 +3748,34 @@ msgstr "" " evalúan las sub-expresiones en paréntesis y pueden sobrepasar\n" " las reglas de prioridad anteriores.\n" " \n" -" Estado de salida:\n" +" 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:988 -#, fuzzy +#: builtins.c:987 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" +" 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" +" 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" +" 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" +" -e\tuse Readline to obtain the line in an interactive shell\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" +" -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" @@ -3958,59 +3793,55 @@ msgid "" " -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" +" 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 "" -"Lee una línea de la salida común y la divide en campos.\n" +"Lee una línea de la salida estándar y la divide en campos.\n" " \n" -" Lee una sola línea de la entrada común, o del descriptor de\n" -" fichero FD si se proporciona la opción -u. La línea se divide en " -"campos\n" +" Lee una sola línea de la entrada estándar, o del descriptor de\n" +" fichero FD si se proporciona la opción -u. La línea se divide en campos\n" " con separación de palabras, y la primera palabra se asigna al primer\n" -" NOMBRE, la segunda palabra al segundo NOMBRE, y así sucesivamente,\n" -" con las palabras restantes asignadas al último NOMBRE. Sólo los " -"caracteres\n" +" NOMBRE, la segunda palabra al segundo NOMBRE, y así sucesivamente, con\n" +" las palabras restantes asignadas al último NOMBRE. Sólo los caracteres\n" " que se encuentran en $IFS se reconocen como delimitadores de palabras.\n" " \n" " Si no se proporciona ningún NOMBRE, la línea leída se guarda en la\n" " variable REPLY.\n" " \n" " Opciones:\n" -" -a matriz\t asigna las palabras leídas a índices secuenciales de\n" -" \t\t la variable matricial MATRIZ, empezando en cero\n" -" -d delim\t continúa hasta que se lea el primer carácter de DELIM,\n" -" \t\t en lugar de línea nueva\n" -" -e\t emplea Readline para obtener la línea en un shell interactivo\n" -" -i texto\t Emplea el TEXTO como el texto inicial para Readline\n" -" -n ncars\t regresa tras leer NCARS caracteres en lugar de\n" -" \t\t esperar una línea nueva, pero honra a un delimitador si\n" -" \t\t se leen menos de NCARS caracteres antes del delimitador\n" -" -N ncars\t devuelve sólo después de leer exactamente NCARS\n" -" \t\t caracteres, a menos que se encuentre el fin del fichero\n" -" \t\t o expire la lectura, descartando cualquier delimitador\n" -" -p prompt\t sale la cadena PROMPT sin un carácter de línea nueva\n" -" \t\t al final antes de intentar leer\n" -" -r\t\t no permite que las barras invertidas escapen caracteres\n" -" -s\t\t no muestra la salida que proviene de una terminal\n" -" -t tiempo\t expira y devuelve fallo si no se lee una línea completa\n" -" \t\t de entrada en TIEMPO segundos. El valor de la variable TMOUT\n" -" \t\t es el tiempo de expiración por defecto. TIEMPO puede ser un\n" -" \t\t número fraccionario. Si TIEMPO es 0, ‘read’ devuelve correcto\n" -" \t\t sólo si hay entrada disponible en el descriptor de fichero\n" -" \t\t especificado. El estado de salida es mayor que 128 si se excede\n" -" \t\t el tiempo de expiración.\n" -" -u df\t\t lee del descriptor de fichero DF en lugar de la entrada\n" -" \t\t común\n" +" -a matriz\tasigna las palabras leídas a índices secuenciales de\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\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\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 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" " \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 lectura se agote, o se proporcione un descriptor\n" " de fichero inválido como el argumento de -u." -#: builtins.c:1035 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -4023,15 +3854,14 @@ 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 devuelto\n" -" especificado por N. Si se omite N, el estado devuelto es el del último\n" -" mandato ejecutado 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." +" Devuelve N, o falla si el shell no está ejecutando una función o un script." -#: builtins.c:1048 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4074,8 +3904,7 @@ msgid "" " 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" +" 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" @@ -4099,8 +3928,7 @@ msgid "" " 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" +" -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" @@ -4119,38 +3947,34 @@ msgstr "" "Establece o borra los valores de las opciones de shell y los parámetros\n" "posicionales.\n" " \n" -" Modifica el valor de los atributos de shell y los parámetros " -"posicionales,\n" +" 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" " Opciones:\n" " -a Marca las variables que se modifican o crean para exportación.\n" -" -b Notifica el término de tareas inmediatamente.\n" -" -e Termina inmediatamente si un mandato termina con un estado\n" -" diferente a cero.\n" +" -b Notifica el término de trabajos inmediatamente.\n" +" -e Termina inmediatamente si una orden termina con un estado\n" +" diferente a cero.\n" " -f Desactiva la generación de nombres de ficheros (englobamiento).\n" -" -h Recuerda la ubicación de los mandatos como se localizaron.\n" -" -k Todos los argumentos de asignación se colocan en el ambiente para " -"un\n" -" mandato, no solo aquellos que preceden al nombre del mandato.\n" -" -m Activa el control de tareas.\n" +" -h Recuerda la ubicación de las órdenes como se localizaron.\n" +" -k Todos los argumentos de asignación se colocan en el ambiente para una\n" +" 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" +" -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 emplea una interfaz de edición lineal 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" " hashall igual que -h\n" " histexpand igual que -H\n" " history activa la historia de órdenes\n" -" ignoreeof el shell no terminará después de leer FDL\n" +" ignoreeof el shell no terminará después de leer EOF\n" " interactive-comments\n" -" permite que haya comentarios en órdenes " -"interactivas\n" +" permite que haya comentarios en órdenes interactivas\n" " keyword igual que -k\n" " monitor igual que -m\n" " noclobber igual que -C\n" @@ -4161,57 +3985,49 @@ msgstr "" " nounset igual que -u\n" " onecmd igual que -t\n" " physical igual que -P\n" -" pipefail el valor devuelto de una tubería es el estado\n" -" del último mandato que sale con un estado " -"diferente\n" -" de cero, o cero si ningún mandato termina con un\n" +" 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 modifica el comportamiento de ‘bash’ donde la\n" +" posix modifica el comportamiento de bash donde la\n" " operación por defecto difiere del estándar POSIX\n" -" para que coincida con la estandarización\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" " xtrace igual que -x\n" -" -p Activo cuando los id real y efectivo del usuario no coinciden.\n" +" -p Activo cuando los ids real y efectivo del usuario no coinciden.\n" " Desactiva el procesamiento del fichero $ENV y la importación de\n" -" funciones de shell. Si se desactiva esta opción causa que el uid " -"y\n" +" funciones de shell. Si se desactiva esta opción causa que el uid y\n" " el gid efectivos sean iguales al uid y el gid real.\n" -" -t Termina después de leer y ejecutar un mandato.\n" +" -t Termina después de leer y ejecutar una orden.\n" " -u Trata las variables sin definir como un error al sustituir.\n" -" -v Escribe las líneas de entrada del shell mientras se leen.\n" -" -x Escribe los mandatos y sus argumentos mientras se ejecutan.\n" +" -v Muestra las líneas de entrada del shell mientras se leen.\n" +" -x Muestra las órdenes y sus argumentos mientras se ejecutan.\n" " -B el shell realizará expansión de llaves.\n" " -C Si se activa, no permite que los ficheros regulares existentes\n" -" se sobrescriban por redirección de la salida.\n" +" se sobreescriban por redirección de la salida.\n" " -E Si se activa, las funciones del shell heredan la trampa ERR.\n" " -H Activa el estilo de sustitución de historia ! . Esta opción está\n" " activa por defecto cuando el shell es interactivo.\n" -" -P Si se activa, no sigue enlaces simbólicos cuando se ejecutan " -"órdenes\n" +" -P Si se activa, no sigue enlaces simbólicos cuando se ejecutan órdenes\n" " como cd, que cambian el directorio actual.\n" " -T Si se activa, las funciones del shell heredan la trampa DEBUG.\n" -" -- Asigna cualquier argumento restante a los parámetros " -"posicionales.\n" -" Si no restan argumentos, se desactivan los parámetros " -"posicionales.\n" -" - Asigna cualquier argumento restante a los parámetros " -"posicionales.\n" +" -- Asigna cualquier argumento restante a los parámetros posicionales.\n" +" Si no restan argumentos, se desactivan los parámetros posicionales.\n" +" - Asigna cualquier argumento restante a los parámetros posicionales.\n" " Las opciones -x y -v se desactivan.\n" " \n" " Si se usa + en lugar de - causa que estas opciones se desactiven. Las\n" -" opciones también se pueden usar en la invocación del shell. El " -"conjunto\n" +" opciones también se pueden usar en la invocación del shell. El conjunto\n" " actual de opciones se puede encontrar en $-. Los n ARGs restantes son\n" -" parámetros posicionales que se asignan, en orden, a $1, $2, .. $n. Si " -"no\n" +" parámetros posicionales que se asignan, en orden, a $1, $2, .. $n. Si no\n" " se proporciona ningún ARG, se muestran todas las variables del shell.\n" " \n" " Estado de Salida:\n" " Devuelve correcto a menos que se proporcione una opción inválida." -#: builtins.c:1133 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4223,8 +4039,7 @@ msgid "" " -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" +" 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" @@ -4237,11 +4052,10 @@ msgstr "" " Por cada NOMBRE, borra la función o variable correspondiente.\n" " \n" " Opciones:\n" -" -f\t trata cada NOMBRE como una función de shell\n" -" -v\t trata cada NOMBRE como una variable de shell\n" -" -n\t trata cada NOMBRE como una referencia de nombre y\n" -" \t\t desestablece la misma variable mejor que a la variable\n" -" \t\t referenciada\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" @@ -4252,13 +4066,12 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o\n" " un NOMBRE sea de sólo lectura." -#: builtins.c:1155 +#: builtins.c:1154 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" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4272,15 +4085,14 @@ msgid "" msgstr "" "Establece el atributo de exportación para las variables de shell.\n" " \n" -" Marca cada NOMBRE para exportación automática al ambiente para los " -"mandatos\n" +" Marca cada NOMBRE para exportación automática al ambiente para las órdenes\n" " ejecutadas subsecuentemente. Si se proporciona un VALOR, se asigna el\n" " VALOR antes de exportar.\n" " \n" " Opciones:\n" -" -f\t se refiere a funciones de shell\n" -" -n\t borra la propiedad de exportación para cada NOMBRE\n" -" -p\t muestra una lista de todas las variables y funciones exportadas\n" +" -f\tse refiere a funciones de shell\n" +" -n\tborra la propiedad de exportación para cada NOMBRE\n" +" -p\tmuestra una lista de todas las variables y funciones exportadas\n" " \n" " El argumento `--' desactiva el procesamiento posterior de opciones.\n" " \n" @@ -4288,7 +4100,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o que\n" " NOMBRE sea inválido." -#: builtins.c:1174 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4311,17 +4123,15 @@ msgstr "" "Marca las variables de shell para evitar su modificación.\n" " \n" " Marca cada NOMBRE como de sólo lectura; los valores de esos NOMBREs\n" -" no se pueden modificar por asignaciones subsecuentes. Si se " -"proporciona\n" +" no se pueden modificar por asignaciones subsecuentes. Si se proporciona\n" " un VALOR, se asigna el VALOR antes de marcar como de sólo lectura.\n" " \n" " Opciones:\n" -" -a\t se refiere a variables de matriz indizada\n" -" -A\t se refiere a variables de matriz asociativa\n" -" -f\t se refiere a funciones de shell\n" -" -p\t enseña una lista de todas las variables y funciones de sólo " -"lectura,\n" -" \t\t dependiendo de si i no la opción -f está dada\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" +" \t\tdependiendo de si se pone o no la opción -f\n" " \n" " El argumento `--' desactiva el procesamiento posterior de opciones.\n" " \n" @@ -4329,7 +4139,7 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o\n" " el NOMBRE sea inválido." -#: builtins.c:1196 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4347,7 +4157,7 @@ msgstr "" " Estado de Salida:\n" " Devuelve correcto a menos que N sea negativo o mayor que $#." -#: builtins.c:1208 builtins.c:1223 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4362,17 +4172,16 @@ msgid "" msgstr "" "Ejecuta órdenes de un fichero en el shell actual.\n" " \n" -" Lee y ejecuta mandatos del FICHERO en el shell actual. Se utilizan las\n" +" Lee y ejecuta órdenes del FICHERO en el shell actual. Se utilizan las\n" " entradas en $PATH para encontrar el directorio que contiene el FICHERO.\n" -" Si se proporciona ARGUMENTOS, se convierten en los parámetros " -"posicionales\n" +" 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 del último mandato ejecutado del FICHERO; falla si\n" +" Devuelve el estado de la última orden ejecutada del FICHERO; falla si\n" " no se puede leer el FICHERO." -#: builtins.c:1239 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4388,17 +4197,16 @@ msgstr "" "Suspende la ejecución del shell.\n" " \n" " Suspende la ejecución de este shell hasta que recibe una señal SIGCONT.\n" -" Los shells de entrada no se pueden suspender, a menos que sean " -"forzados.\n" +" Los shells de entrada no se pueden suspender, a menos que sean forzados.\n" " \n" " Opciones:\n" " -f\tfuerza la suspensión, aún si el shell es un shell de entrada\n" " \n" " Estado de Salida:\n" -" Devuelve correcto a menos que no esté activo el control de tareas o\n" +" Devuelve correcto a menos que no esté activo el control de trabajos o\n" " suceda un error." -#: builtins.c:1255 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4432,8 +4240,7 @@ msgid "" " -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 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" @@ -4454,8 +4261,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4488,8 +4294,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 argumentos. Lea la página\n" -" del manual de bash para la especificación completa.\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" " \n" @@ -4498,14 +4304,11 @@ msgstr "" " -c FICHERO Verdadero si el fichero es especial de caracteres.\n" " -d FICHERO Verdadero si el fichero es un directorio.\n" " -e FICHERO Verdadero si el fichero existe.\n" -" -f FICHERO Verdadero si el fichero existe y es un fichero " -"regular.\n" -" -g FICHERO Verdadero si el fichero tiene activado el set-group-" -"id.\n" +" -f FICHERO Verdadero si el fichero existe y es un fichero regular.\n" +" -g FICHERO Verdadero si el fichero tiene activado el set-group-id.\n" " -h FICHERO Verdadero si el fichero es un enlace simbólico.\n" " -L FICHERO Verdadero si el fichero es un enlace simbólico.\n" -" -k FICHERO Verdadero si el fichero tiene el bit `sticky' " -"activado.\n" +" -k FICHERO Verdadero si el fichero tiene el bit `sticky' activado.\n" " -p FICHERO Verdadero si el fichero es una tubería nombrada.\n" " -r FICHERO Verdadero si el fichero es legible para usted.\n" " -s FICHERO Verdadero si el fichero existe y no está vacío.\n" @@ -4516,8 +4319,7 @@ msgstr "" " -x FICHERO Verdadero si usted puede ejecutar el fichero.\n" " -O FICHERO Verdadero si usted efectivamente posee el fichero.\n" " -G FICHERO Verdadero si su grupo efectivamente posee el fichero.\n" -" -N FICHERO Verdadero si el fichero se modificó desde la última " -"lectura.\n" +" -N FICHERO Verdadero si el fichero se modificó desde la última lectura.\n" " \n" " FICH1 -nt FICH2 Verdadero si fich1 es más reciente que fich2\n" " (de acuerdo a la fecha de modificación).\n" @@ -4548,11 +4350,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 un " -"nombre\n" -" referencial.\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 ambos 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" @@ -4565,7 +4366,7 @@ msgstr "" " 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:1337 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4574,35 +4375,32 @@ msgid "" msgstr "" "Evalúa una expresión condicional.\n" " \n" -" Este es un sinónimo para el mandato interno \"test\", pero el último\n" -" argumento debe ser un `]' literal, que coincida con el `[' inicial." +" Este es un sinónimo para la orden interna \"test\", pero el último\n" +" argumento debe ser un `]' literal, que concuerde con el `[' inicial." -#: builtins.c:1346 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\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 "" -"Enseña los tiempos de proceso.\n" +"Muestra los tiempos de proceso.\n" " \n" -" Escribe los tiempos de usuario y sistema acumulados por el shell y " -"todos\n" -" sus subprocesos.\n" +" Muestra los tiempos de usuario y sistema acumulados por el shell y todos\n" +" sus procesos hijos.\n" " \n" -" Estado de salida:\n" +" Estado de Salida:\n" " Siempre correcto." -#: builtins.c:1358 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\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" @@ -4611,61 +4409,52 @@ msgid "" " 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" +" 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" +" 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 or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in 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." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" "Atrapa señales y otros eventos.\n" " \n" -" Define y activa manipuladores 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 un mandato para leer y ejecutar cuando el shell recibe la(s)\n" +" ARG es una orden para leer y ejecutar cuando el shell recibe la(s)\n" " señal(es) ID_SEÑAL. Si ARG no está presente (y sólo se proporciona\n" " una sola ID_SEÑAL) o se proporciona `-', cada señal especificada se\n" " reestablece a su valor original. Si ARG es la cadena nula, el shell\n" -" y los mandatos que invoque ignoran cada ID_SEÑAL.\n" +" y las órdenes que invoque ignoran cada ID_SEÑAL.\n" " \n" -" Si una ID_SEÑAL es EXIT (0) se ejecuta el mandato ARG al salir del\n" -" shell. Si una ID_SEÑAL es DEBUG, se ejecuta ARG después de cada\n" -" mandato 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 los mandatos internos\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 un mandato 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 mandatos\n" +" Si no se proporcionan argumentos, trap muestra la lista de órdenes\n" " asociadas con cada señal.\n" " \n" " Opciones:\n" -" -l\t muestra una lista de nombres de señal con su número " -"correspondiente\n" -" -p\t muestra los mandatos trap asociadas con cada ID_SEÑAL\n" +" -l\tmuestra una lista de nombres de señal con su número correspondiente\n" +" -p\tmuestra las órdenes trap asociadas con cada ID_SEÑAL\n" " \n" " Cada ID_SEÑAL es un nombre de señal en o un número de señal.\n" " Los nombres de señal no son sensibles a mayúsculas y minúsculas y el\n" @@ -4673,13 +4462,12 @@ msgstr "" " \"kill -signal $$\". \n" " \n" " Estado de Salida:\n" -" Devuelve correcto a menos que una ID_SEÑAL sea inválida o se " -"proporcione\n" +" 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:1394 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4705,47 +4493,40 @@ msgid "" " 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." +" Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" -"Enseña información sobre el tipo de mandato.\n" +"Muestra información sobre el tipo de orden.\n" " \n" -" Por cada NOMBRE, indica cómo se interpretaría si se emplea como un\n" -" nombre de mandato.\n" +" Por cada NOMBRE, indica cómo se interpretaría si se utilizara como un\n" +" nombre de orden.\n" " \n" " Opciones:\n" -" -a\t enseña todas las ubicaciones que contienen un ejecutable llamado\n" -" \t NOMBRE; incluye aliases, mandatos internos, y funciones, si y solo " -"si\n" -" \t no se empleó también la opción `-p'\n" -" -f\t suprime la búsqueda de funciones de shell\n" -" -P\t fuerza una búsqueda en PATH por cada nombre, aún si hay un " -"alias,\n" -" \t mandato interno, o función, y devuelve el nombre del fichero en el " -"disco\n" -" \t que se ejecutaría\n" -" -p\t devuelve ya sea el nombre del fichero en disco que se " -"ejecutaría,\n" -" \t o nada si `type -t NOMBRE' no devuelve `fichero'.\n" -" -t\t saca una sola palabra, que es una de `alias', `keyword',\n" -" \t`function', `builtin', `file' o `', si el NOMBRE es un alias,\n" -" \t palabra reservada del shell, función del shell, mandato interno del\n" -" \t shell, fichero de disco, o no se encuentra, respectivamente.\n" +" -a\tmuestra todas las ubicaciones que contienen un ejecutable llamado\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, 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\t Nombre de mandato a interpretar.\n" +" NOMBRE\tNombre de orden a interpretar.\n" " \n" " Estado de Salida:\n" -" Devuelve como correcto 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:1425 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\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" @@ -4802,8 +4583,7 @@ msgstr "" " -c\tel tamaño máximo de los ficheros `core' creados\n" " -d\tel tamaño máximo del segmento de datos de un proceso\n" " -e\tla prioridad máxima de calendarización (`nice')\n" -" -f\tel tamaño máximo de los ficheros escritos por el shell y sus " -"hijos\n" +" -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" @@ -4822,8 +4602,7 @@ msgstr "" " \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" +" Si se establece LÍMITE, éste es el nuevo valor del recurso especificado;\n" " los valores especiales de LÍMITE `soft', `hard' y `unlimited'\n" " corresponden al límite suave actual, el límite duro actual, y\n" " sin límite, respectivamente. De otra forma, se muestra el valor actual\n" @@ -4834,12 +4613,11 @@ 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 correcto a menos que se proporcione una opción inválida o " -"suceda\n" +" Estado de Salida:\n" +" Devuelve correcto a menos que se proporcione una opción inválida o suceda\n" " un error." -#: builtins.c:1475 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4856,14 +4634,13 @@ msgid "" " Exit Status:\n" " Returns success unless MODE is invalid or an invalid option is given." msgstr "" -"Enseña o establece la máscara de modo de ficheros.\n" +"Muestra o establece la máscara de modo de ficheros.\n" " \n" " Establece la máscara de creación de ficheros del usuario a MODO. Si se\n" " omite el MODO, muestra el valor actual de la máscara.\n" " \n" " Si el MODO empieza con un dígito, se interpreta como un número octal;\n" -" de otra forma es una cadena de modo simbólico como la que acepta chmod " -"(1).\n" +" de otra forma es una cadena de modo simbólico como la que acepta chmod (1).\n" " \n" " Opciones:\n" " -p\tsi se omite el MODO, muestra en una forma reusable como entrada\n" @@ -4873,67 +4650,59 @@ msgstr "" " Devuelve correcto a menos que el MODO sea inválido o se proporcione\n" " una opción inválida." -#: builtins.c:1495 -#, fuzzy +#: builtins.c:1494 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" +" 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" +" status is zero. If ID is a 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 terminación de la tarea y devuelve el estado de salida.\n" +"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 tarea, y boletina su estado de salida.\n" -" Si no se proporciona un ID, espera a todos los subprocesos 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" -" tarea, espera a todos los procesos en la cola de tareas.\n" +" trabajo, espera a todos los procesos en la cola de trabajos.\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." -#: builtins.c:1519 +#: builtins.c:1515 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" +" 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" +" Returns the status of the last PID; fails if PID is invalid or an invalid\n" " option is given." msgstr "" -"Espera para terminar el proceso y devolver el estado de salida.\n" +"Espera la terminación del proceso y devuelve el estado de salida.\n" " \n" -" Espera por cada proceso especificado por un PID y reporta su\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 descendientes activos, y el código de devolución sea cero.\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 del último PID; falla si PID es inválido o se " -"proporciona\n" +" Devuelve el estado del último PID; falla si PID es inválido o se proporciona\n" " una opción inválida." -#: builtins.c:1534 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4947,15 +4716,15 @@ 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 MANDATOS.\n" +" se define NOMBRE como ese elemento, y se ejecutan las ÓRDENES.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado del último mandato ejecutado." +" Devuelve el estado de la última orden ejecutada." -#: builtins.c:1548 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4971,21 +4740,21 @@ 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" " \twhile (( EXP2 )); do\n" -" \t\tMANDATOS\n" +" \t\tÓRDENES\n" " \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 del último mandato ejecutado." +" Devuelve el estado de la última orden ejecutada." -#: builtins.c:1566 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5014,15 +4783,15 @@ msgstr "" " línea consiste en el número correspondiente a una de las palabras\n" " mostradas, entonces se define NOMBRE como esa palabra. Si la\n" " línea está vacía, PALABRAS y el prompt se muestran de nuevo. Si\n" -" se lee FDL, se completa el mandato. Cualquier otro valor leído\n" +" se lee EOF, se completa la orden. Cualquier otro valor leído\n" " causa que NOMBRE se defina como nulo. La línea leída se guarda\n" -" en la variable REPLY. Se ejecutan las MANDATOS después de cada\n" -" selección hasta que se ejecuta un mandato break.\n" +" en la variable REPLY. Se ejecutan las ÓRDENES después de cada\n" +" selección hasta que se ejecuta una orden break.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado del último mandato ejecutado." +" Devuelve el estado de la última orden ejecutada." -#: builtins.c:1587 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5049,7 +4818,7 @@ msgstr "" " Estado de Salida:\n" " El estado de devolución es el estado de devolución de la TUBERÍA." -#: builtins.c:1604 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5061,27 +4830,22 @@ msgid "" msgstr "" "Ejecuta órdenes en base a la coincidencia de patrones.\n" " \n" -" Ejecuta MANDATOS selectivamente basado en coincidencias de la PALABRA\n" +" Ejecuta ÓRDENES selectivamente basado en coincidencias de la PALABRA\n" " con el PATRÓN. Se utiliza `|' para separar patrones múltiples.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado del último mandato ejecutado." +" Devuelve el estado de la última orden ejecutada." -#: builtins.c:1616 +#: builtins.c:1612 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" +" 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" +" `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" @@ -5089,22 +4853,19 @@ msgid "" msgstr "" "Ejecuta comandos en base a condicionales.\n" " \n" -" Se ejecuta la lista `if MANDATOS'. Si su estado de salida es cero,\n" +" Se ejecuta la lista `if ÓRDENES'. Si su estado de salida es cero,\n" " entonces se ejecuta la lista `then ÓRDENES`. De otra forma, cada lista\n" -" `elif MANDATOS' se ejecuta en su lugar, y si su estado de salida es " -"cero,\n" -" se ejecuta la lista `then MANDATOS' correspondiente y se completa el\n" -" mandato if. De otra forma, se ejecuta la lista `else MANDATOS', si " -"está\n" -" presente. El estado de salida de todo el constructor es el estado " -"saliente\n" -" del último mandato ejecutado, o cero si ninguna condición resultó\n" +" `elif ÓRDENES' se ejecuta en su lugar, y si su estado de salida es 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 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 del último mandato ejecutado." +" Devuelve el estado de la última orden ejecutada." -#: builtins.c:1633 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5116,13 +4877,13 @@ msgid "" msgstr "" "Ejecuta órdenes mientras una prueba sea correcta.\n" " \n" -" Expande y ejecuta MANDATOS mientras el mandato final en las MANDATOS\n" +" Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n" " `while' tenga un estado de salida de cero.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado del último mandato ejecutado." +" Devuelve el estado de la última orden ejecutada." -#: builtins.c:1645 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5134,13 +4895,13 @@ msgid "" msgstr "" "Ejecuta órdenes mientras una prueba sea correcta.\n" " \n" -" Expande y ejecuta MANDATOS mientras el mandato final en las MANDATOS\n" +" Expande y ejecuta ÓRDENES mientras la orden final en las ÓRDENES\n" " `until' tengan un estado de salida que no sea cero.\n" " \n" " Estado de Salida:\n" -" Devuelve el estado del último mandato ejecutado." +" Devuelve el estado de la última orden ejecutada." -#: builtins.c:1657 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5154,22 +4915,21 @@ msgid "" msgstr "" "Crea un coproceso llamado NOMBRE.\n" " \n" -" Ejecuta el MANDATO asíncronamente, con la salida y entrada comunes\n" -" del mandato conectado a través de una tubería a los descriptores\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" -" lineal NOMBRE en el shell en ejecución. El nombre por defecto es\n" +" NOMBRE en el shell en ejecución. El nombre por defecto es\n" " \"COPROC\".\n" " \n" " Estado de Salida:\n" -" El mandato «coproc» devuelve un estado de salida a 0." +" La orden «coproc» devuelve un estado de salida de 0." -#: builtins.c:1671 +#: builtins.c:1667 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" +" 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" @@ -5178,15 +4938,15 @@ msgid "" msgstr "" "Define una función de shell.\n" " \n" -" Crea una función de shell llamada NOMBRE. Cuando se invoca como un\n" -" mandato simple, NOMBRE ejecuta MANDATOs en el contexto del shell\n" +" Crea una función de shell llamada NOMBRE. Cuando se invoca como una\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 correcto a menos que NOMBRE sea de sólo lectura." -#: builtins.c:1685 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -5196,15 +4956,15 @@ msgid "" " Exit Status:\n" " Returns the status of the last command executed." msgstr "" -"Agrupa mandatos como una unidad.\n" +"Agrupa órdenes como una unidad.\n" " \n" -" Ejecuta un conjunto de mandatos dentro de un grupo. Esta es una\n" -" forma de redirigir un conjunto completo de mandatos.\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 del último mandato ejecutado." +" Devuelve el estado de la última orden ejecutada." -#: builtins.c:1697 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -5217,19 +4977,19 @@ msgid "" " Exit Status:\n" " Returns the status of the resumed job." msgstr "" -"Reinicia la tarea en primer plano.\n" +"Reinicia el trabajo en primer plano.\n" " \n" -" Equivalente al argumento IDTAREA del mandato `fg'. Reinicia una\n" -" tarea detenida o en segundo plano. IDTAREA puede especificar\n" -" un nombre de tarea o un número de tarea. Un `&' a continuación\n" -" de IDTAREA coloca a la tarea en segundo plano, como si la\n" -" especificación del tarea se hubiera proporcionado como\n" +" 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 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 tarea reiniciado." +" Devuelve el estado del trabajo reiniciado." -#: builtins.c:1712 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5247,16 +5007,13 @@ msgstr "" " Estado de Salida:\n" " Devuelve 1 si la EXPRESIÓN evalúa a 0; devuelve 0 de otra manera." -#: builtins.c:1724 +#: builtins.c:1720 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" +" 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" @@ -5274,17 +5031,15 @@ msgid "" " Exit Status:\n" " 0 or 1 depending on value of EXPRESSION." msgstr "" -"Ejecuta un mandato condicional.\n" +"Ejecuta una orden condicional.\n" " \n" -" Devuelve un estado de 0 ó 1 dependiendo de la evaluación de la " -"expresión\n" +" Devuelve un estado de 0 ó 1 dependiendo de la evaluación de la expresión\n" " condicional EXPRESIÓN. Las expresiones se componen de los mismos\n" -" elementos primarios usados por el mandato interno `test', y se pueden\n" +" elementos primarios usados por la orden interna `test', y se pueden\n" " 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 " -"falso\n" +" ! 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" " \tEXPR1 || EXPR2\tVerdadero si EXPR1 o EXPR2 es verdadero; de\n" @@ -5300,7 +5055,7 @@ msgstr "" " Estado de Salida:\n" " 0 o 1 dependiendo del valor de la EXPRESIÓN." -#: builtins.c:1750 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5359,63 +5114,63 @@ msgstr "" " CDPATH\tUna lista de directorios separada por dos puntos\n" " \t\tpara buscar directorios dados como argumentos para `cd'.\n" " GLOBIGNORE\tUna lista de patrones separada por dos puntos\n" -" \t\t que describe nombres de fichero a ignorar por la expansión\n" -" \t\t de rutas de nombre.\n" +" \t\tque describe nombres de fichero a ignorar por la expansión\n" +" \t\tde rutas de nombre.\n" " HISTFILE\tEl nombre del fichero donde se almacena su historia\n" -" \t\t de mandatos.\n" +" \t\tde órdenes.\n" " HISTFILESIZE\t El número máximo de líneas que puede contener\n" -" \t\t este fichero.\n" -" HISTSIZE\t El número máximo de líneas históricas que un shell\n" -" \t\t en ejecución puede acceder.\n" -" HOME\t La ruta completa a su directorio de entrada.\n" -" HOSTNAME\t El nombre del anfitrión actual.\n" -" HOSTTYPE\t El tipo de CPU bajo el cual se ejecuta esta versión\n" -" \t\t de Bash.\n" -" IGNOREEOF\t Controla la acción del shell al recibir un carácter\n" -" \t\t FDL como la única entrada. Si está definida, entonces su\n" -" \t\t valor es el número de caracteres FDL que se deben leer de\n" -" \t\t forma consecutiva en una línea vacía antes de que el shell\n" -" \t\t termine (por defecto 10). Cuando no está definida, FDL\n" -" \t\t significa el fin de la entrada.\n" -" MACHTYPE\t Una cadena que describe el sistema actual donde se\n" -" \t\t ejecuta Bash.\n" -" MAILCHECK\t La frecuencia, en segundos, que Bash busca correo nuevo.\n" -" MAILPATH\t Una lista de nombres de ficheros separada por dos puntos\n" -" \t\t en la cual Bash busca correo nuevo.\n" -" OSTYPE\t la versión de Unix en la que se ejecuta esta versión\n" -" \t\t de Bash.\n" -" PATH\t Una lista de directorios separada por dos puntos en la que\n" -" \t\t se buscan mandatos.\n" -" PROMPT_COMMAND\t Un mandato a ejecutar antes de mostrar cada prompt\n" -" \t\t primario.\n" -" PS1\t\t La cadena primaria de prompt.\n" -" PS2\t\t La cadena secundaria de prompt.\n" -" PWD\t\t La ruta completa del directorio actual.\n" -" SHELLOPTS\t Una lista separada por dos puntos de las opciones\n" -" \t\t de shell activadas.\n" -" TERM\t El nombre del tipo actual de terminal.\n" -" TIMEFORMAT\t El formato de salida para las estadísticas de tiempo\n" -" \t\t mostradas por la palabra reservada `time'.\n" -" auto_resume\t Si no es nulo significa que una palabra de mandato\n" -" \t\t que aparece en una línea por sí sola se busca primero en la lista\n" -" \t\t actual de tareas detenidos. Si se encuentra ahí, esa tarea\n" -" \t\t se coloca en primer plano. Un valor `exact' significa que la\n" -" \t\t palabra de mandato debe coincidir exactamente con un\n" -" \t\t mandato interno a la lista de tareas detenidas. Un valor\n" -" \t\t `substring' significa que la palabra de mandato debe coincidir\n" -" \t\t con una subcadena de la tarea. Cualquier otro valor significa\n" -" \t\t que el mandato debe ser un prefijo de una tarea detenida.\n" -" histchars\t Los caracteres que controlan la expansión de historia\n" -" \t\t y la sustitución rápida. El primer carácter es el carácter de\n" -" \t\t sustitución de historia, generalmente `!'. El segundo es el\n" -" \t\t carácter de `sustitución rápida', generalmente `^'. El tercero\n" +" \t\teste fichero.\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\n" +" \t\tde Bash.\n" +" IGNOREEOF\tControla la acción del shell al recibir un carácter\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" +" MACHTYPE\tUna cadena que describe el sistema actual donde se\n" +" \t\tejecuta Bash.\n" +" MAILCHECK\tLa frecuencia, en segundos, que Bash busca correo nuevo.\n" +" MAILPATH\tUna lista de nombres de ficheros separada por dos puntos\n" +" \t\ten la cual Bash busca correo nuevo.\n" +" OSTYPE\tla versión de Unix en la que se ejecuta esta versión\n" +" \t\tde Bash.\n" +" PATH\tUna lista de directorios separada por dos puntos en la que\n" +" \t\tse buscan órdenes.\n" +" PROMPT_COMMAND\tUna orden a ejecutar antes de mostrar cada prompt\n" +" \t\tprimario.\n" +" PS1\t\tLa cadena primaria de prompt.\n" +" PS2\t\tLa cadena secundaria de prompt.\n" +" PWD\t\tLa ruta completa del directorio actual.\n" +" SHELLOPTS\tUna lista separada por dos puntos de las opciones\n" +" \t\tde shell activadas.\n" +" 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\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 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\t es el carácter `comentario de historia', generalmente `#'.\n" -" HISTIGNORE\t Una lista separada por dos puntos de patrones\n" -" \t\t utilizados para decidir cuáles mandatos se deben guardar en\n" -" \t\t el listado histórico.\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:1807 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5445,36 +5200,36 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"Añade directorios a la pila.\n" +"Agrega directorios a la pila.\n" " \n" -" Añade un directorio superior de la pila de directorios, o rota\n" -" la pila, haciendo que el nuevo techo 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 superior.\n" +" los dos directorios de la parte superior.\n" " \n" " Opciones:\n" -" -n\t suprime el cambio normal de directorio cuando se agregan\n" -" \t\t directorios a la pila, así sólo se manipula la pila.\n" +" -n\tsuprime el cambio normal de directorio cuando se agregan\n" +" \t\tdirectorios a la pila, así sólo se manipula la pila.\n" " \n" " Argumentos:\n" -" +N\t Rota la pila para que el N-ésimo directorio (contando\n" -" \t\t de la izquierda de la lista mostrada por `dirs', comenzando\n" -" \t\t desde cero) esté en el superior.\n" +" +N\tRota la pila para que el N-ésimo directorio (contando\n" +" \t\tdesde la izquierda de la lista mostrada por `dirs', comenzando\n" +" \t\tdesde cero) esté en la parte superior.\n" " \n" -" -N\t Rota la pila para que el N-ésimo directorio (contando desde\n" -" \t\t la derecha de la lista mostrada por `dirs', comenzando\n" -" \t\t desde cero) esté en el techo.\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\t Añade DIR a la pila de directorios en el techo, creándolo\n" -" \t\t 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" -" Los directorios `dirs' construidos enseña la pila del directorios.\n" +" La orden interna `dirs' muestra la pila de directorios.\n" " \n" -" Estados de Salida:\n" +" Estado de Salida:\n" " Devuelve correcto a menos que se proporcione un argumento\n" -" inválido o falle la modificación del directorio." +" inválido o falle el cambio de directorio." -#: builtins.c:1841 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5500,35 +5255,35 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"Quita directorios de la pila.\n" +"Borra directorios de la pila.\n" " \n" -" Quita entradas de la pila de directorios. Sin argumentos,\n" -" quita el directorio del techo de la pila, y cambia al nuevo\n" -" directorio techo.\n" +" Borra entradas de la pila de directorios. Sin argumentos,\n" +" borra el directorio del tope de la pila, y cambia al nuevo\n" +" directorio tope.\n" " \n" " Opciones:\n" -" -n\t suprime el cambio normal de directorio cuando se quitan\n" -" \t\t directorios 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\tQuita la N-ésima entrada contando de la izquierda de\n" -" \t\t la lista mostrada por `dirs', comenzando desde cero. Por\n" -" \t\t ejemplo: `popd +0' borra el primer directorio, `popd +1'\n" -" \t\t el 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\t Quita la N-ésima entrada contando de la derecha de\n" -" \t\t la lista mostrada por `dirs', comenzando desde cero. Por\n" -" \t\t ejemplo: `popd -0' borra el último directorio, `popd -1'\n" -" \t\t el 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" -" El mandato interno `dirs' muestra el contenido de la pila.\n" +" La orden interna `dirs' muestra la pila de directorios.\n" " \n" " Estado de Salida:\n" -" Devuelve como correcto a menos que se proporcione un\n" +" Devuelve correcto a menos que se proporcione un\n" " argumento inválido o falle el cambio de directorio." -#: builtins.c:1871 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5559,39 +5314,37 @@ msgstr "" "Muestra la pila de directorios.\n" " \n" " Muestra la lista de directorios actualmente grabados. Los directorios\n" -" se guardan en la lista con el mandato `pushd'; pueden ir saliendo de\n" -" la lista con el mandato `popd'.\n" +" se guardan en la lista con la orden `pushd'; pueden ir saliendo de\n" +" 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" -" \t+N\tmuestra la N-ésima entrada contando desde\n" -" \tla izquierda de la lista mostrada por dirs cuando se invoca sin\n" -" \topciones, empezando de cero.\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 izquierda de la\n" -" \tlista mostrada por dirs cuando se invoca sin opciones, empezando\n" -" \tdesde cero.\n" +" \t\tlista mostrada por dirs cuando se invoca sin opciones, empezando\n" +" \t\tdesde cero.\n" " \n" " Estado de Salida:\n" " Devuelve correcto, a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1902 -#, fuzzy +#: builtins.c:1898 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" +" arguments, list all shell options with an indication of whether or not each\n" +" is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5606,7 +5359,7 @@ msgid "" msgstr "" "Activa y desactiva opciones de shell.\n" " \n" -" Modifica la configuración de cada opción de shell NOMBRE_OPCIÓN. Sin\n" +" Cambia la configuración de cada opción de shell NOMBRE_OPCIÓN. Sin\n" " alguna opción como argumento, muestra todas las opciones de shell con\n" " una indicación si está activa o no.\n" " \n" @@ -5621,7 +5374,7 @@ msgstr "" " 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:1923 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5629,48 +5382,40 @@ msgid "" " -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" +" 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" +" 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" +" 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" +" %(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" +" 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" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" "Da formato y muestra ARGUMENTOS bajo el control del FORMATO.\n" " \n" " Opciones:\n" " -v var\tasigna la salida a la variable de shell VAR en lugar\n" -" \t\tde enseñarla en la salida común\n" +" \t\tde mostrarla en la salida estándar\n" " \n" " FORMATO es una cadena de caracteres la cual contiene tres tipos de\n" " objetos: caracteres simples, los cuales solamente se copian a la salida\n" -" salida común; secuencias de escape de caracteres, las cuales\n" -" se convierten y se copian a la salida común; y especificaciones de\n" -" formato, cada una de las cuales causa la muestra del siguiente " -"argumento\n" +" salida estándar; secuencias de escape de caracteres, las cuales\n" +" se convierten y se copian a la salida estándar; y especificaciones de\n" +" formato, cada una de las cuales causa la muestra del siguiente argumento\n" " consecutivo.\n" " \n" " Además de las especificaciones de formato estándar descritas en\n" @@ -5678,28 +5423,26 @@ 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 es reutilizado como sea necesario para consumir todo lo\n" -" del argumento . Si hay menores argumentos que el formato requiere,\n" -" especificaciones adicionales de formato se comporta como si un valor\n" -" cero o cadena nula, como sea apropiado, se haya suministrado.\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 correcto a menos que se proporcione una opción inválida o\n" " suceda un error de escritura o de asignación." -#: builtins.c:1957 +#: builtins.c:1953 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" +" 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" @@ -5722,19 +5465,18 @@ msgstr "" " \n" " Por cada NOMBRE, especifica cuántos argumentos se deben completar. Si\n" " no se proporcionan opciones, se muestran las especificaciones de\n" -" completado existentes en una forma que permite que se reusen como " -"entrada.\n" +" completado existentes en una forma que permite que se reusen como entrada.\n" " \n" " Opciones:\n" -" -p\t escribe las especificaciones de completado existentes en formato\n" -" \t\t reusable\n" -" -r\t borra una especificación de completado para cada NOMBRE, o,\n" -" \t\t si no se proporcionan NOMBREs, todas las especificaciones\n" -" \t\t de completado\n" -" -D\t aplica los completados y acciones por defecto para los mandatos\n" -" \t\t sin ninguna especificación de completado definida\n" -" -E\t aplica los completados y acciones para mandatos \"vacíos\" --\n" -" \t\t cuando se intenta completar en una línea en blanco\n" +" -p\tmuestra las especificaciones de completado existentes en formato\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" +" \t\tsin ninguna especificación de completado definida\n" +" -E\taplica los completados y acciones para órdenes \"vacías\" --\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\n" " en que se listan las opciones de letra mayúscula antes indicadas. La\n" @@ -5744,19 +5486,18 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:1985 +#: builtins.c:1981 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" +" 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 "" -"Enseña los posibles complementos dependiendo de las opciones.\n" +"Muestra los posibles complementos dependiendo de las opciones.\n" " \n" " Sirve para usarse desde una función de shell que genere complementos\n" " posibles. Si se proporciona el argumento opcional PALABRA, se generan\n" @@ -5766,16 +5507,13 @@ msgstr "" " Devuelve correcto a menos que se proporcione una opción inválida o\n" " suceda un error." -#: builtins.c:2000 +#: builtins.c:1996 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" +" 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" @@ -5796,54 +5534,47 @@ msgid "" " Returns success unless an invalid option is supplied or NAME does not\n" " have a completion specification defined." msgstr "" -"Modifica o enseña las opciones de completado.\n" +"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\n" -" SE proporcionan OPCIONes, muestra las opciones de completado para\n" -" cada NOMBRE o la especificación de completado actual.\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\t Establece la opción de completado OPCIÓN para\n" -" \t\t cada NOMBRE\n" -" \t-D\t\t Modifica las opciones para el completado de mandato \"por " -"defecto\"\n" -" \t-E\t\t Modifica las opciones para el completado de mandato \"vacía\"\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 UTILIZA `+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 un mandato para la cual se definió previamente\n" -" una especificación de completado usando el mandato interno `complete'.\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\n" -" función que genere completados, y se modifican las opciones para ese\n" -" generador de completados en ejecución.\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 correcto a menos que se proporcione una opción inválida o el\n" +" 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:2030 +#: builtins.c:2026 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" +" 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" +" -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" +" -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" @@ -5856,49 +5587,47 @@ msgid "" " 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" +" 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" +" Returns success unless an invalid option is given or ARRAY is readonly 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\t Copia hasta CUENTA líneas. Si CUENTA es 0, se copian\n" -" \t\t todas las líneas.\n" -" -O origen\t Comienza a asignar a MATRIZ en el índice ORIGEN. El\n" -" \t\tíndice por defecto es 0.\n" -" -s cuenta \t Descarta las primeras CUENTA líneas leídas.\n" -" -t\t\t Borra la nueva línea final de cada línea leída.\n" -" -u df\t\t Lee líneas del descriptor de fichero DF en lugar de la\n" -" \t\t entrada común.\n" -" -C llamada\t Evalúa LLAMADA cada vez que se leen QUANTUM líneas.\n" -" -c quantum\t Especifica el número de líneas a leer entre cada\n" -" \t\t llamada a LLAMADA.\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\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" +" \t\t\tllamada a LLAMADA.\n" " \n" " Argumentos:\n" -" MATRIZ\t\t Nombre 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" " se evalúa LLAMADA, se proporciona el índice del siguiente elemento\n" -" de la matriz asignada como un argumento adicional.\n" +" de la matriz a asignar como un argumento adicional.\n" " \n" -" Si no se proporciona un origen explícito, ‘mapfile’ borrará la MATRIZ\n" +" Si no se proporciona un origen explícito, mapfile borrará la MATRIZ\n" " antes de usarla para asignación.\n" " \n" " Estado de Salida:\n" " 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 indizada." +" la MATRIZ sea de sólo lectura o no sea una matriz indexada." -#: builtins.c:2066 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5906,4 +5635,4 @@ msgid "" msgstr "" "Lee líneas de un fichero en una variable de matriz.\n" " \n" -" Un sinónimo de `mapfile'." +" Sinónimo de `mapfile'." diff --git a/po/ga.po b/po/ga.po index ddc421651..f5ed6a326 100644 --- a/po/ga.po +++ b/po/ga.po @@ -7,136 +7,131 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" "PO-Revision-Date: 2017-11-20 22:38+0000\n" "Last-Translator: Séamus Ó Ciardhuáin \n" "Language-Team: Irish \n" +"Language: ga\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: ga\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" +"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:58 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "droch-fhoscript eagair" -#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 -#: variables.c:2922 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: aitreabúid nameref (tagairt athróga) á baint" -#: arrayfunc.c:398 builtins/declare.def:831 +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" -msgstr "" -"%s: ní féidir eagar innéacsaithe a thiontú go heagar comhthiomsaitheach" +msgstr "%s: ní féidir eagar innéacsaithe a thiontú go heagar comhthiomsaitheach" -#: arrayfunc.c:582 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: eochair neamhbhailí eagair chomhthiomsaithigh" -#: arrayfunc.c:584 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: ní féidir sannadh go hinnéacs neamhuimhriúil." -#: arrayfunc.c:629 +#: arrayfunc.c:625 #, 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" +msgstr "%s: %s: caithfear foscript a úsáid le sannadh chuig eagar comhthiomsaitheach" -#: bashhist.c:436 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: ní féidir cruthú: %s" -#: bashline.c:4111 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "" -"bash_execute_unix_command: ní féidir mapa eochrach an ordaithe a aimsiú" +msgstr "bash_execute_unix_command: ní féidir mapa eochrach an ordaithe a aimsiú" -#: bashline.c:4221 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: ní \" an chéad charachtar nach spás bán é." -#: bashline.c:4250 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "Níl '%c' dúnta i %s" -#: bashline.c:4284 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: deighilteoir idirstaid ar iarraidh" -#: braces.c:331 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "fairsingiú lúibíní: ní féidir cuimhne a leithdháileadh le haghaidh %s" -#: braces.c:429 -#, fuzzy, c-format -msgid "brace expansion: failed to allocate memory for %u elements" -msgstr "" -"fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh %d eilimint" +#: braces.c:427 +#, c-format +msgid "brace expansion: failed to allocate memory for %d elements" +msgstr "fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh %d eilimint" -#: braces.c:473 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "fairsingiú lúibíní: theip ar leithdháileadh cuimhne le haghaidh '%s'" -#: builtins/alias.def:131 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "'%s': ainm neamhbhailí ar mhapa eochrach" -#: builtins/bind.def:122 builtins/bind.def:125 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "níl eagarthóireacht líne cumasaithe" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "'%s': ainm neamhbhailí ar mhapa eochrach " -#: builtins/bind.def:252 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: ní féidir léamh: %s" -#: builtins/bind.def:304 builtins/bind.def:334 +#: 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 #, c-format msgid "`%s': unknown function name" msgstr "'%s': ainm feidhme neamhaithnid" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "Níl %s ceangailte le heochair ar bith.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "Is féidir %s a ghlaoigh trí " -#: 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 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "comhaireamh lúibe" -#: builtins/break.def:139 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "Gan chiall ach i lúb 'for', 'while' nó 'until'" @@ -150,162 +145,162 @@ msgstr "" " \n" " Gan SLONN, aischuirtear " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "Níl HOME socruithe" -#: builtins/cd.def:327 builtins/common.c:161 test.c:889 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "An iomarca argóintí" -#: builtins/cd.def:334 +#: builtins/cd.def:336 msgid "null directory" msgstr "comhadlann neamhnitheach" -#: builtins/cd.def:345 +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "Níl OLDPWD socruithe" -#: builtins/common.c:96 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "líne %d: " -#: builtins/common.c:134 error.c:264 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "rabhadh: " -#: builtins/common.c:148 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: úsáid: " -#: builtins/common.c:193 shell.c:510 shell.c:838 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: tá argóint riachtanach don rogha" -#: builtins/common.c:200 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: argóint uimhriúil de dhíth" -#: builtins/common.c:207 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: gan aimsiú" -#: builtins/common.c:216 shell.c:851 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: rogha neamhbhailí" -#: builtins/common.c:223 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: ainm neamhbhailí rogha" -#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "'%s': ní aitheantóir bailí é" -#: builtins/common.c:240 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "uimhir ochtnártha neamhbhailí" -#: builtins/common.c:242 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "uimhir heicsidheachúlach neamhbhailí" -#: builtins/common.c:244 expr.c:1538 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "uimhir neamhbhailí" -#: builtins/common.c:252 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: sonrú neamhbhailí comhartha" -#: builtins/common.c:259 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "'%s': ní aitheantas próisis nó sonrú taisc bailí é" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: athróg inléite amháin" -#: builtins/common.c:274 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s as raon" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argóint" -#: builtins/common.c:276 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s as raon" -#: builtins/common.c:284 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: níl a léithéid de tasc ann." -#: builtins/common.c:292 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: gan rialú tascanna." -#: builtins/common.c:294 +#: builtins/common.c:300 msgid "no job control" msgstr "Gan rialú tascanna." -#: builtins/common.c:304 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: srianta" -#: builtins/common.c:306 +#: builtins/common.c:312 msgid "restricted" msgstr "srianta" -#: builtins/common.c:314 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: ní ordú ionsuite blaoisce é." -#: builtins/common.c:323 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "earráid scríofa: %s" -#: builtins/common.c:331 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "earráid agus airíonna teirminéil á socrú: %s" -#: builtins/common.c:333 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "earráid agus airíonna teirminéil á fáil: %s" -#: builtins/common.c:579 +#: builtins/common.c:585 #, 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:645 builtins/common.c:647 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: sonrú taisc athbhríoch" -#: builtins/common.c:908 +#: builtins/common.c:918 msgid "help not available in this version" msgstr "Níl cabhair ar fáil sa leagan seo." @@ -314,76 +309,72 @@ msgstr "Níl cabhair ar fáil sa leagan seo." msgid "%s: invalid action name" msgstr "%s: ainm neamhbhailí gnímh" -#: builtins/complete.def:452 builtins/complete.def:653 -#: builtins/complete.def:874 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: níl sonrú iomlánaithe ann." -#: builtins/complete.def:707 +#: builtins/complete.def:699 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." +msgstr "Rabhadh: b'fhéidir nach n-oibríonn an rogha -F mar a bheifeá ag súil leis." -#: builtins/complete.def:709 +#: builtins/complete.def:701 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." +msgstr "Rabhadh: b'fhéidir nach n-oibríonn an rogha -C mar a bheifeá ag súil leis." -#: builtins/complete.def:847 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "níl an fheidhm chomhlánaithe á rith faoi láthair" -#: builtins/declare.def:132 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "Inúsáidte i bhfeidhmeanna amháin. " -#: builtins/declare.def:369 builtins/declare.def:736 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: ní féidir le athróg thagartha bheith ina h-eagar" -#: builtins/declare.def:380 variables.c:3161 +#: builtins/declare.def:343 variables.c:2959 #, 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)" +msgstr "%s: ní cheadaítear tagairtí don athróg féin i nameref (tagairt athróga)" -#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 -#: variables.c:3158 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 #, c-format msgid "%s: circular name reference" msgstr "%s: tagairt ainm ciorclach" -#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm" -#: builtins/declare.def:500 +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "Ní féidir '-f' a úsáid chun feidhmeanna a dhéanamh" -#: builtins/declare.def:512 execute_cmd.c:5797 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: feidhm inléite amháin" -#: builtins/declare.def:804 +#: builtins/declare.def:753 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: cáintear sannadh na gcomheagar athfhriotail" -#: builtins/declare.def:818 +#: builtins/declare.def:767 #, 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:825 builtins/read.def:784 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" -msgstr "" -"%s: ní féidir eagar comhthiomsaitheach a thiontú go heagar innéacsaithe" +msgstr "%s: ní féidir eagar comhthiomsaitheach a thiontú go heagar innéacsaithe" #: builtins/enable.def:143 builtins/enable.def:151 msgid "dynamic loading not available" @@ -402,9 +393,7 @@ msgstr "Ní féidir %s a aimsiú sa réad comhroinnte %s: %s" #: builtins/enable.def:387 #, 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 é" +msgstr "theip ar an ngníomh luchtála le haghaidh %s (aiscuireadh %d): níor luchtáladh é" #: builtins/enable.def:512 #, c-format @@ -416,68 +405,68 @@ msgstr "%s: níl sé luchtaithe go dinimiciúil" msgid "%s: cannot delete: %s" msgstr "%s: ní féidir scrios: %s" -#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: is comhadlann é" -#: builtins/evalfile.c:144 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: ní gnáthchomhad é" -#: builtins/evalfile.c:153 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: tá an comhad ró-mhór" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: ní féidir comhad dénártha a rith" -#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: ní féidir rith: %s" -#: builtins/exit.def:64 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:89 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "Ní blaosc logála isteach é seo: úsáid 'exit'" -#: builtins/exit.def:121 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Tá tascanna stoptha ann.\n" -#: builtins/exit.def:123 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Tá tascanna ag rith.\n" -#: builtins/fc.def:265 +#: builtins/fc.def:269 msgid "no command found" msgstr "Níor aimsíodh ordú" -#: builtins/fc.def:323 builtins/fc.def:372 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "Sonrú staire" -#: builtins/fc.def:393 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: ní féidir comhad sealadach a oscailt: %s" -#: builtins/fg_bg.def:152 builtins/jobs.def:284 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "reatha" -#: builtins/fg_bg.def:161 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "Tosaíodh tasc %d gan rialú tascanna." @@ -492,21 +481,22 @@ 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:91 +#: builtins/hash.def:92 msgid "hashing disabled" msgstr "Tá haiseáil díchumasaithe." -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tá an tábla haiseála folamh.\n" -#: builtins/hash.def:266 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "amais\tordú\n" -#: builtins/help.def:133 +#: builtins/help.def:135 +#, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Ordaithe blaoisce a mheaitseálann an lorgfhocal '" @@ -515,20 +505,17 @@ 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:185 +#: builtins/help.def:187 #, c-format -msgid "" -"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"Ní mheaitseálann ábhar cabhrach ar bith '%s'. Bain triail as 'help help' nó " -"'man -k %s' nó 'info %s'." +msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "Ní mheaitseálann ábhar cabhrach ar bith '%s'. Bain triail as 'help help' nó 'man -k %s' nó 'info %s'." -#: builtins/help.def:224 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: ní féidir oscailt: %s" -#: builtins/help.def:524 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -543,26 +530,24 @@ msgstr "" "Usáid 'help' leis an liosta seo a thaispeáint.\n" "Úsáid 'help ainm' chun tuilleadh eolais a fháil faoin bhfeidhm 'ainm'.\n" "Úsáid 'info bash' chun tuilleadh eolais a fháil faoin mblaosc féin.\n" -"Úsáid 'man -k' nó 'info' chun tuilleadh eolais a fháil faoi ordaithe nach " -"bhfuil sa liosta seo.\n" +"Úsáid 'man -k' nó 'info' chun tuilleadh eolais a fháil faoi ordaithe nach bhfuil sa liosta seo.\n" "Ciallaíonn réalt (*) ar ainm go bhfuil an t-ordú díchumasaithe.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 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:197 builtins/history.def:212 -#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 +#: builtins/history.def:187 msgid "history position" msgstr "suíomh staire" -#: builtins/history.def:331 +#: builtins/history.def:264 #, c-format msgid "%s: invalid timestamp" msgstr "%s: stampa ama neamhbhailí" -#: builtins/history.def:442 +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: theip ar fhairsingiú staire." @@ -576,16 +561,16 @@ msgstr "%s: theip ar inlib" msgid "no other options allowed with `-x'" msgstr "Níl roghanna eile ceadaithe le '-x'" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: is gá le argóintí bheith ina aitheantais phróisis nó taisc" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Earráid neamhaithnid" -#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "Ag súil le slonn" @@ -594,69 +579,69 @@ msgstr "Ag súil le slonn" msgid "%s: not an indexed array" msgstr "%s: ní eagar innéacsaithe é" -#: builtins/mapfile.def:271 builtins/read.def:305 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: sonrú neamhbhailí tuairisceora comhaid" -#: builtins/mapfile.def:279 builtins/read.def:312 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: tuairisceoir comhaid neamhbhailí: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: comhaireamh neamhbhailí línte" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: bunphointe neamhbhailí eagair" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: candam neamhbhailí aisghlaoigh" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "ainm folamh athróga eagair" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "tacaíocht le hathróga eagair de dhíth" -#: builtins/printf.def:416 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "'%s': carachtar formáide ar iarraidh." -#: builtins/printf.def:471 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "'%c': sonrú neamhbhailí formáide ama" -#: builtins/printf.def:673 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "'%c': carachtar formáide neamhbhailí." -#: builtins/printf.def:699 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "rabhadh: %s: %s" -#: builtins/printf.def:785 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "fadhb i bpársáil formáide: %s" -#: builtins/printf.def:882 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "digit heicsidheachúlach ar iarraidh le haghaidh \\x" -#: builtins/printf.def:897 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "digit Unicode ar iarraidh le haghaidh \\%c" @@ -670,19 +655,19 @@ msgstr "Níl comhadlann eile ann" msgid "%s: invalid argument" msgstr "%s: argóint neamhbhailí" -#: builtins/pushd.def:480 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:524 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "cruach chomhadlainne fholamh" -#: builtins/pushd.def:526 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "innéacs chruach na gcomhadlann" -#: builtins/pushd.def:701 +#: builtins/pushd.def:696 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,12 +682,10 @@ msgid "" " \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" +" +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" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Taispeáin liosta na gcomhadlann a bhfuil cuimhne orthu faoi láthair.\n" @@ -711,22 +694,18 @@ msgstr "" " \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" +" -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" +" +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 +#: builtins/pushd.def:718 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" @@ -751,7 +730,7 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/pushd.def:748 +#: builtins/pushd.def:743 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" @@ -772,46 +751,45 @@ msgid "" " The `dirs' builtin displays the directory stack." msgstr "" -#: builtins/read.def:277 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: sonrú neamhbhailí teorann ama" -#: builtins/read.def:729 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "earráid léite: %d: %s" -#: builtins/return.def:68 +#: builtins/return.def:71 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'" +msgstr "ní féidir 'return' a dhéanamh ach ó fheidhm nó ó script rite le 'source'" -#: builtins/set.def:834 +#: builtins/set.def:841 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:881 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: ní féidir díshocrú" -#: builtins/set.def:902 variables.c:3597 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: ní féidir díshocrú: %s inléite amháin" -#: builtins/set.def:915 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: ní athróg eagair é" -#: builtins/setattr.def:189 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: ní feidhm é." -#: builtins/setattr.def:194 +#: builtins/setattr.def:196 #, c-format msgid "%s: cannot export" msgstr "%s: ní féidir easpórtáil" @@ -820,20 +798,20 @@ msgstr "%s: ní féidir easpórtáil" msgid "shift count" msgstr "comhaireamh iomlaoide" -#: builtins/shopt.def:301 +#: builtins/shopt.def:289 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:403 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: ainm neamhbhailí ar rogha blaoisce" -#: builtins/source.def:128 +#: builtins/source.def:131 msgid "filename argument required" msgstr "Is gá don argóint bheith ina ainm comhaid." -#: builtins/source.def:154 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: níor aimsíodh an comhad" @@ -846,61 +824,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:235 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "Tá %s ailiasáilte go '%s'.\n" -#: builtins/type.def:256 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "Is eochairfhocal blaoisce é %s.\n" -#: builtins/type.def:275 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "Is feidhm é %s.\n" -#: builtins/type.def:299 +#: builtins/type.def:300 #, c-format msgid "%s is a special shell builtin\n" msgstr "Is ordú ionsuite blaoisce speisialta é %s\n" -#: builtins/type.def:301 +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "Is ordú ionsuite blaoisce é %s\n" -#: builtins/type.def:323 builtins/type.def:408 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "Tá %s %s\n" -#: builtins/type.def:343 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "Tá %s haiseáilte (%s)\n" -#: builtins/ulimit.def:396 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argóint teorann neamhbhailí" -#: builtins/ulimit.def:422 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "'%c': droch-ordú" -#: builtins/ulimit.def:451 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: ní féidir teorainn a fháil: %s" -#: builtins/ulimit.def:477 +#: builtins/ulimit.def:479 msgid "limit" msgstr "teorainn" -#: builtins/ulimit.def:489 builtins/ulimit.def:789 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: ní féidir teorainn a athrú: %s" @@ -919,374 +897,357 @@ msgstr "'%c': oibreoir neamhbhailí móid shiombalaigh" msgid "`%c': invalid symbolic mode character" msgstr "'%c': carachtar neamhbhailí móid shiombalaigh" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " líne " -#: error.c:164 +#: error.c:165 #, c-format msgid "last command: %s\n" msgstr "Ordú deireanach: %s\n" -#: error.c:172 +#: error.c:173 #, c-format msgid "Aborting..." msgstr "Ag tobscor..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:287 +#: error.c:288 #, c-format msgid "INFORM: " msgstr "EOLAS: " -#: error.c:462 +#: error.c:463 msgid "unknown command error" msgstr "earráid ordaithe neamhaithnid" -#: error.c:463 +#: error.c:464 msgid "bad command type" msgstr "droch-chineál ordaithe" -#: error.c:464 +#: error.c:465 msgid "bad connector" msgstr "drochnascóir" -#: error.c:465 +#: error.c:466 msgid "bad jump" msgstr "drochléim" -#: error.c:503 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: athróg neamhcheangailte" -#: eval.c:242 +#: eval.c:209 #, 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" -#: execute_cmd.c:536 +#: execute_cmd.c:527 #, 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:1294 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "FORMÁID_AMA: '%c': carachtar formáide neamhbhaií." -#: execute_cmd.c:2330 +#: execute_cmd.c:2273 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: tá an comhphróiseas [%d:%s] fós ann" -#: execute_cmd.c:2456 +#: execute_cmd.c:2377 msgid "pipe error" msgstr "earráid phíopa" -#: execute_cmd.c:4624 +#: execute_cmd.c:4496 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: imithe thar uasleibhéal neadaithe eval (%d)" -#: execute_cmd.c:4636 +#: execute_cmd.c:4508 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: imithe thar uasleibhéal neadaithe foinse (%d)" -#: execute_cmd.c:4742 +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: imithe thar uasleibhéal neadaithe feidhme (%d)" -#: execute_cmd.c:5285 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: srianta: ní féidir '/' a shonrú in ainmneacha ordaithe" -#: execute_cmd.c:5383 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: níor aimsíodh an t-ordú" -#: execute_cmd.c:5627 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5665 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: drochléirmhínitheoir" -#: execute_cmd.c:5702 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: ní féidir comhad dénártha a rith: %s" -#: execute_cmd.c:5788 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "Is ordú ionsuite speisialta é '%s'" -#: execute_cmd.c:5840 +#: execute_cmd.c:5675 #, 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." +msgstr "Ní féidir an tuairisceoir comhaid %d a dhúbailt mar thuairisceoir comhaid %d." -#: expr.c:263 +#: expr.c:259 msgid "expression recursion level exceeded" msgstr "imithe thar leibhéal athchursála sloinn" -#: expr.c:291 +#: expr.c:283 msgid "recursion stack underflow" msgstr "gannsreabhadh na cruaiche athchúrsála" -#: expr.c:453 +#: expr.c:431 msgid "syntax error in expression" msgstr "Earráid chomhréire sa slonn." -#: expr.c:497 +#: expr.c:475 msgid "attempted assignment to non-variable" msgstr "Deineadh iarracht sannadh go rud nach athróg é." -#: expr.c:506 -#, fuzzy -msgid "syntax error in variable assignment" -msgstr "Earráid chomhréire sa slonn." - -#: expr.c:520 expr.c:886 +#: expr.c:495 expr.c:858 msgid "division by 0" msgstr "roinnt ar 0" -#: expr.c:567 +#: expr.c:542 msgid "bug: bad expassign token" msgstr "fabht: droch-chomhartha expassign" -#: expr.c:621 +#: expr.c:595 msgid "`:' expected for conditional expression" msgstr "Bhíothas ag súil le ':' le haghaidh sloinn choinníollaigh." -#: expr.c:947 +#: expr.c:919 msgid "exponent less than 0" msgstr "Easpónant níos lú ná 0." -#: expr.c:1004 +#: expr.c:976 msgid "identifier expected after pre-increment or pre-decrement" msgstr "ag súil le aitheantóir tar éis réamhincriminte nó réamhdeicriminte" -#: expr.c:1030 +#: expr.c:1002 msgid "missing `)'" msgstr "')' ar iarraidh" -#: expr.c:1081 expr.c:1458 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "Earráid chomhréire: bhíothas ag súil le hoibreann." -#: expr.c:1460 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "earráid chomhréire: oibreoir neamhbhailí uimhríochta" -#: expr.c:1484 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (comhartha earráide '%s')" -#: expr.c:1542 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "Bonnuimhir uimhríochtúil neamhbhailí." -#: expr.c:1562 +#: expr.c:1497 msgid "value too great for base" msgstr "Tá an luach rómhór don bhonnuimhir." -#: expr.c:1611 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: earráid sloinn\n" -#: general.c:69 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: ní féidir na máthairchomhadlanna a rochtain." -#: input.c:99 subst.c:5858 +#: input.c:102 subst.c:5858 #, 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 " -"%d" +msgstr "ní féidir an mód gan mhoill a athshocrú le haghaidh an tuairisceora chomhaid %d" -#: input.c:266 +#: input.c:271 #, 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." +msgstr "Ní féidir tuairisceoir comhaid nua a leithdháileadh le haghaidh ionchur bash ón tuairisceoir comhaid %d." -#: input.c:274 +#: input.c:279 #, 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" +msgstr "save_bash_input: tá an maolán ann cheana le haghaidh an tuairisceoir comhaid nua %d" #: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp píopa" -#: jobs.c:1080 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "Tá aitheantas an phróisis ghabhlaithe %d sa tasc %d atá ag rith" -#: jobs.c:1199 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "Tá an tasc stoptha %d leis an ngrúpa próisis %ld á scrios." -#: jobs.c:1303 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: próiseas %5ld (%s) sa phíblíne" -#: jobs.c:1306 +#: jobs.c:1261 #, 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:1635 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: níl an aitheantóir próisis sin ann." -#: jobs.c:1650 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Comhartha %d" -#: jobs.c:1664 jobs.c:1690 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Déanta" -#: jobs.c:1669 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Stoptha" -#: jobs.c:1673 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Stoptha(%s)" -#: jobs.c:1677 +#: jobs.c:1632 msgid "Running" msgstr "Ag Rith" -#: jobs.c:1694 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Déanta(%d)" -#: jobs.c:1696 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Scoir %d" -#: jobs.c:1699 +#: jobs.c:1654 msgid "Unknown status" msgstr "Stádas neamhaithnid" -#: jobs.c:1786 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(cuimhne dumpáilte)" -#: jobs.c:1805 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (comhadlann oibre: %s)" -#: jobs.c:2033 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid macphróisis (%ld go %ld)" -#: jobs.c:2395 nojobs.c:657 +#: jobs.c:2347 nojobs.c:654 #, 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:2687 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: níl taifead den phróiseas %ld" -#: jobs.c:3048 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: tá an tasc %d stoptha." -#: jobs.c:3355 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: tá an tasc críochnaithe." -#: jobs.c:3364 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: tá an tasc %d sa chúlra cheana." -#: jobs.c:3590 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: ag cumasú WNOHANG chun stad éiginnte a sheachaint" -#: jobs.c:4114 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: líne %d: " -#: jobs.c:4128 nojobs.c:900 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (cuimhne dumpáilte)" -#: jobs.c:4140 jobs.c:4153 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(comhadlann oibre anois: %s)\n" -#: jobs.c:4185 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: theip ar getpgrp" -#: jobs.c:4241 -#, fuzzy -msgid "initialize_job_control: no job control in background" -msgstr "initialize_job_control: araíonacht líne" - -#: jobs.c:4257 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: araíonacht líne" -#: jobs.c:4267 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4288 jobs.c:4297 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "ní féidir an grúpa próisis teirminéil a athrú (%d)" -#: jobs.c:4302 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "Níl rialú tascanna sa bhlaosc seo." -#: lib/malloc/malloc.c:306 +#: lib/malloc/malloc.c:296 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: dearbhú teipthe: %s\n" -#: lib/malloc/malloc.c:322 +#: lib/malloc/malloc.c:312 #, c-format msgid "" "\r\n" @@ -1295,39 +1256,39 @@ msgstr "" "\r\n" "malloc: %s:%d: dearbhú ina phraiseach\r\n" -#: lib/malloc/malloc.c:323 +#: lib/malloc/malloc.c:313 msgid "unknown" msgstr "neamhaithnid" -#: lib/malloc/malloc.c:811 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: bloc ar an liosta saor scriosta" -#: lib/malloc/malloc.c:888 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: glaoite le argóint bhloic á saoradh cheana" -#: lib/malloc/malloc.c:891 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: glaoite le argóint bhloic nár leithdháileadh" -#: lib/malloc/malloc.c:910 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: gannsreabhadh; tá mh_nbytes as raon" -#: lib/malloc/malloc.c:916 +#: lib/malloc/malloc.c:906 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:1015 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: glaoite le argóint bhloic nár leithdháileadh" -#: lib/malloc/malloc.c:1030 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: gannsreabhadh; tá mh_nbytes as raon" -#: lib/malloc/malloc.c:1036 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: ní ionann méideanna na smután túis agus deiridh" @@ -1339,8 +1300,7 @@ msgstr "register_alloc: an bhfuil an tábla leithdháilte lán le FIND_ALLOC?\n" #: lib/malloc/table.c:200 #, c-format msgid "register_alloc: %p already in table as allocated?\n" -msgstr "" -"register_alloc: an bhfuil %p sa tábla mar atá sé leithdháilte cheana?\n" +msgstr "register_alloc: an bhfuil %p sa tábla mar atá sé leithdháilte cheana?\n" #: lib/malloc/table.c:253 #, c-format @@ -1370,22 +1330,22 @@ msgstr "%s: drochshonrú conaire líonra" msgid "network operations not supported" msgstr "Ní thacaítear le oibríochtaí líonra." -#: locale.c:205 +#: locale.c:200 #, 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:207 +#: locale.c:202 #, 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:272 +#: locale.c:259 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s)" -#: locale.c:274 +#: locale.c:261 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: ní féidir an logchaighdeán a athrú (%s): %s" @@ -1403,152 +1363,145 @@ 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:317 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "Earráid chomhréire: tá slonn uimhríochtúil de dhith." -#: make_cmd.c:319 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "Earráid chomhréire: ';' gan súil leis." -#: make_cmd.c:320 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "Earráid chomhréire: '((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: drochchineál ordaithe %d" -#: make_cmd.c:657 +#: make_cmd.c:669 #, 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' á lorg)" +msgstr "cáipéis leabaithe ag líne %d teormharcáilte le deireadh comhaid ('%s' á lorg)" -#: make_cmd.c:756 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: ordú atreoraithe '%d' as raon." -#: parse.y:2369 +#: parse.y:2324 #, 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" +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:2772 +#: parse.y:2700 msgid "maximum here-document count exceeded" msgstr "imithe thar uasfhad na cáipéise-anseo" -#: parse.y:3511 parse.y:3881 +#: parse.y:3390 parse.y:3748 #, 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:4581 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "Deireadh comhaid gan súil leis agus ']]' á lorg." -#: parse.y:4586 +#: parse.y:4415 #, 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:4590 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "Earráid chomhréire i slonn coinníollach." -#: parse.y:4668 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "Comhartha '%s' gan súil leis; ag súil le ')'." -#: parse.y:4672 +#: parse.y:4501 msgid "expected `)'" msgstr "Ag súil le ')'" -#: parse.y:4700 +#: parse.y:4529 #, 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:4704 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "Argóint gan súil lei go hoibreoir coinníollach aonártha ." -#: parse.y:4750 +#: parse.y:4579 #, 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." +msgstr "Comhartha '%s' gan súil leis. Bhíothas ag súil le hoibreoir coinníollach dénártha." -#: parse.y:4754 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "Bhíothas ag súil le hoibreoir coinníollach dénártha." -#: parse.y:4776 +#: parse.y:4605 #, 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." -#: parse.y:4780 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "Argóint gan súil lei go hoibreoir dénártha coinníollach." -#: parse.y:4791 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "Comhartha '%c' gan súil leis in ordú coinníollach." -#: parse.y:4794 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "Comhartha '%s' gan súil leis in ordú coinníollach." -#: parse.y:4798 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "Comhartha %d gan súil leis in ordú coinníollach." -#: parse.y:6220 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "Earráid chomhréire in aice comhartha '%s' nach rabhthas ag súil leis." -#: parse.y:6238 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "Earráid chomhréire in aice '%s'" -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "Earráid chomhréire: deireadh comhaid gan súil leis." -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error" msgstr "Earráid chomhréire" -#: parse.y:6310 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Úsáid '%s' le scoir den mblaosc.\n" -#: parse.y:6472 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "Deireadh comhaid gan súil leis agus ')' á lorg le meaitseáil." -#: pcomplete.c:1132 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "Iomlánú: níor aimsíodh an fheidhm '%s'." -#: pcomplete.c:1722 +#: pcomplete.c:1646 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "críochnú in-ríomhchláraithe: %s: d'fhéadfadh lúb atriail a bheith ann" @@ -1558,118 +1511,109 @@ msgstr "críochnú in-ríomhchláraithe: %s: d'fhéadfadh lúb atriail a bheith msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: tá COMPSPEC neamhnitheach" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: drochnascóir '%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: tuairisceoir comhaid neamhbhailí" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: pointeoir folamh comhaid" -#: print_cmd.c:382 +#: 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:1538 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: '%c': carachtar formáide neamhbhailí" -#: redir.c:121 redir.c:167 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "tuairisceoir comhaid as raon" -#: redir.c:174 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: atreorú athbhríoch" -#: redir.c:178 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: ní féidir comhad atá ann cheana a fhorscríobh." -#: redir.c:183 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: srianta: ní féidir aschur a atreorú." -#: redir.c:188 +#: redir.c:192 #, 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:192 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: ní féidir tuairisceoir comhaid a shannadh go hathróg." -#: redir.c:588 +#: redir.c:586 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:870 redir.c:985 redir.c:1046 redir.c:1211 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "Earráid atreoraithe: ní féidir an tuairisceoir comhaid a dhúbailt." -#: shell.c:343 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "Níorbh fhéidir /tmp a aimsiú. Cruthaigh é le do thoil!" -#: shell.c:347 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "Caithfidh /tmp bheith ina ainm comhadlainne bailí." -#: shell.c:798 -msgid "pretty-printing mode ignored in interactive shells" -msgstr "" - -#: shell.c:940 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: rogha neamhbhailí" -#: shell.c:1299 +#: shell.c:1282 #, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "" -"Ní féidir an t-aitheantóir úsáideora (uid) a athrú go %d: aitheantóir " -"éifeachtach %d" +msgstr "Ní féidir an t-aitheantóir úsáideora (uid) a athrú go %d: aitheantóir éifeachtach %d" -#: shell.c:1306 +#: shell.c:1289 #, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "" -"Ní féidir an t-aitheantóir grúpa (gid) a athrú go %d: aitheantóir " -"éifeachtach %d" +msgstr "Ní féidir an t-aitheantóir grúpa (gid) a athrú go %d: aitheantóir éifeachtach %d" -#: shell.c:1494 +#: shell.c:1458 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." +msgstr "Ní féidir an dífhabhtóir a thosú; tá an mód dífhabhtaithe díchumasaithe." -#: shell.c:1608 +#: shell.c:1566 #, c-format msgid "%s: Is a directory" msgstr "%s: is comhadlann é" -#: shell.c:1826 +#: shell.c:1777 msgid "I have no name!" msgstr "Níl ainm orm!" -#: shell.c:1980 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, leagan %s-(%s)\n" -#: shell.c:1981 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1678,52 +1622,49 @@ msgstr "" "Úsáid:\t%s [rogha fada GNU] [rogha] ...\n" "\t%s [rogha fada GNU] [rogha] comhad_scripte ...\n" -#: shell.c:1983 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Roghanna fada GNU:\n" -#: shell.c:1987 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Roghanna blaoisce:\n" -#: shell.c:1988 +#: shell.c:1938 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:2003 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s nó -o rogha\n" -#: shell.c:2009 +#: shell.c:1959 #, 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" +msgstr "Úsáid %s -c 'help set' le haghaidh tuilleadh eolais faoi roghanna blaoisce.\n" -#: shell.c:2010 +#: shell.c:1960 #, 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 " -"blaoisce.\n" +msgstr "Úsáid '%s -c help' le haghaidh tuilleadh eolais faoi orduithe ionsuite blaoisce.\n" -#: shell.c:2011 +#: shell.c:1961 #, 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" -#: shell.c:2013 +#: shell.c:1963 #, c-format msgid "bash home page: \n" msgstr "leathanach baile bash: \n" -#: shell.c:2014 +#: shell.c:1964 #, c-format msgid "General help using GNU software: \n" msgstr "Cabhair ghinearálta le bogearraí GNU: \n" -#: sig.c:695 +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: oibríocht neamhbhailí" @@ -1897,21 +1838,21 @@ msgstr "Comhartha neamhaithnid #" msgid "Unknown Signal #%d" msgstr "Comhartha neamhaithnid #%d" -#: subst.c:1450 subst.c:1641 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "Drochionadú: níl '%s' dúnta i %s" -#: subst.c:3209 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: ní féidir liosta a shannadh go ball eagair." -#: subst.c:5734 subst.c:5750 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadaíocht próisis." -#: subst.c:5796 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadaíocht próisis." @@ -1928,81 +1869,69 @@ msgstr "Ní féidir píopa ainmnithe %s a oscailt le haghaidh scríofa." #: subst.c:5873 #, 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." +msgstr "Ní féidir an píopa ainmnithe %s a dhúbailt mar thuairisceoir comhaid %d." -#: subst.c:5990 +#: subst.c:5959 msgid "command substitution: ignored null byte in input" msgstr "ionadú orduithe: tugadh neamhaird ar ghiotán neamhnitheach san ionchur" -#: subst.c:6121 +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "Ní féidir píopa a dhéanamh le haghaidh ionadú ordaithe." -#: subst.c:6164 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "Ní féidir macphróiseas a dhéanamh le haghaidh ionadú ordaithe." -#: subst.c:6190 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "" -"command_substitute: ní feidir an píopa a dhúbailt mar thuairisceoir comhaid " -"1." +msgstr "command_substitute: ní feidir an píopa a dhúbailt mar thuairisceoir comhaid 1." -#: subst.c:6641 subst.c:9483 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "'%s': ainm neamhbhailí athróige le haghaidh tagairt ainm" -#: subst.c:6737 subst.c:6755 subst.c:6903 +#: subst.c:6666 subst.c:8351 subst.c:8371 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: drochionadú" + +#: subst.c:6800 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: fairsingiú neamhbhailí indíreach" -#: subst.c:6771 subst.c:6910 +#: subst.c:6807 #, c-format msgid "%s: invalid variable name" msgstr "%s: ainm neamhbhailí athróige" -#: subst.c:6962 -#, fuzzy, c-format -msgid "%s: parameter not set" -msgstr "%s: paraiméadar neamhnitheach nó gan socrú." - -#: subst.c:6964 +#: subst.c:6854 #, c-format msgid "%s: parameter null or not set" msgstr "%s: paraiméadar neamhnitheach nó gan socrú." -#: subst.c:7201 subst.c:7216 +#: subst.c:7089 subst.c:7104 #, c-format msgid "%s: substring expression < 0" msgstr "%s: slonn fotheaghráin < 0" -#: subst.c:8839 subst.c:8860 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: drochionadú" - -#: subst.c:8948 +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: ní féidir sannadh mar seo." -#: subst.c:9346 -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:8802 +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:9903 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "drochionadú: níl '`' dúnta i %s" -#: subst.c:10907 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "gan meaitseáil: %s" @@ -2025,108 +1954,105 @@ msgstr "Ag súil le ')'" msgid "`)' expected, found %s" msgstr "Ag súil le ')', ach fuarthas %s." -#: test.c:282 test.c:748 test.c:751 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: ag súil le hoibreoir aonártha." -#: test.c:469 test.c:791 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: ag súil le hoibreoir dénártha." -#: test.c:873 +#: test.c:869 msgid "missing `]'" msgstr "']' ar iarraidh" -#: trap.c:216 +#: trap.c:224 msgid "invalid signal number" msgstr "Uimhir chomhartha neamhbhailí" -#: trap.c:379 +#: trap.c:387 #, 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:383 +#: trap.c:391 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "" -"run_pending_traps: is SIG_DFL an láimhseálaí comharthaí; %d (%s) á " -"athsheoladh chugam féin." +msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: is SIG_DFL an láimhseálaí comharthaí; %d (%s) á athsheoladh chugam féin." -#: trap.c:439 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: droch-chomhartha %d" -#: variables.c:399 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "Earráid agus sainmhíniú na feidhme '%s' á iompórtáil." -#: variables.c:801 +#: variables.c:814 #, 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:2512 +#: variables.c:2413 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:2531 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: ní féidir luach a shannadh ar an athróg" -#: variables.c:3246 +#: variables.c:3043 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: slánuimhir a sannadh go tagairt ainm" -#: variables.c:4149 +#: variables.c:3940 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:4437 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "Tá teaghrán easpórtála neamhnitheach ag %s" -#: variables.c:4442 variables.c:4451 +#: variables.c:4223 variables.c:4232 #, 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:4457 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "Níl '=' sa teaghrán easpórtála le haghaidh %s." -#: variables.c:4911 +#: variables.c:4684 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:4924 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: níl comhthéacs global_variables ann" -#: variables.c:4999 +#: variables.c:4772 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:5862 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: ní féidir a oscailt mar CHOMHAD" -#: variables.c:5867 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: luach neamhbhailí le haghaidh tuairisceoir comhaid rianaithe" -#: variables.c:5912 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: luach comhoiriúnachta as raon" @@ -2136,12 +2062,8 @@ msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Cóipcheart © 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" -"Ceadúnas GPLv3+: GNU GPL leagan 3 nó níos déanaí \n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "Ceadúnas GPLv3+: GNU GPL leagan 3 nó níos déanaí \n" #: version.c:86 version2.c:86 #, c-format @@ -2154,26 +2076,24 @@ msgstr "Is saorbhogearra é seo; tá cead agat é a athrú agus é a athdháile #: version.c:92 version2.c:92 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í." +msgstr "Ní ghabhann baránta ar bith leis, sa mhéid is atá sin ceadaithe de réir dlí." -#: xmalloc.c:93 +#: xmalloc.c:91 #, 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:95 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: ní féidir %lu beart a leithdháileadh" -#: xmalloc.c:165 +#: xmalloc.c:163 #, 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)" +msgstr "%s: %s:%d: ní féidir %lu beart a leithdháileadh (%lu beart leithdháilte)" -#: xmalloc.c:167 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: ní féidir %lu beart a leithdháileadh" @@ -2187,13 +2107,8 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] ainm [ainm ...]" #: 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_EOCHRACH] [-f AINM_CHOMHAID] [-q AINM] [-u AINM] [-" -"r SRAITH_EOCHRACHA] [-x SRAITH_EOCHRACHA:ORDÚ_BLAOISCE] [SRAITH_EOCHRACHA:" -"GNÍOMH_readline nó ORDÚ_readline]" +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]" @@ -2269,8 +2184,7 @@ msgstr "logout [n]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "" -"fc [-e AINM_E] [-lnr] [CÉAD] [DEIREANACH] nó fc -s [PATRÚN=IONADAÍ] [ORDÚ]" +msgstr "fc [-e AINM_E] [-lnr] [CÉAD] [DEIREANACH] nó fc -s [PATRÚN=IONADAÍ] [ORDÚ]" #: builtins.c:109 msgid "fg [job_spec]" @@ -2289,12 +2203,8 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [PATRÚN ...]" #: builtins.c:123 -msgid "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " -"[arg...]" -msgstr "" -"history [-c] [-d SEACH_CHUR] [n] nó history -anrw [COMHADAINM] nó history -" -"ps ARGÓINT [ARGÓINT...]" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "history [-c] [-d SEACH_CHUR] [n] nó history -anrw [COMHADAINM] nó history -ps ARGÓINT [ARGÓINT...]" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2305,25 +2215,16 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]" 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] " -"AITHEANTAS_PRÓISIS | SONRÚ_TAISC ... nó kill -l [SONRÚ_COMHARTHA]" +msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgstr "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 ...]" msgstr "let argóint [argóint ...]" #: 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 eagar] [-d teormharcóir] [-i téacs] [-n líon_carachtar] [-N " -"líon_carachtar] [-p leid] [-t teorainn_ama] [-u tuairisceoir_comhaid] " -"[ainm ...]" +msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgstr "read [-ers] [-a eagar] [-d teormharcóir] [-i téacs] [-n líon_carachtar] [-N líon_carachtar] [-p leid] [-t teorainn_ama] [-u tuairisceoir_comhaid] [ainm ...]" #: builtins.c:140 msgid "return [n]" @@ -2386,8 +2287,7 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [MÓD]" #: builtins.c:177 -#, fuzzy -msgid "wait [-fn] [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [-n] [AITHEANTAS ...]" #: builtins.c:181 @@ -2415,12 +2315,8 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case FOCAL in [PATRÚN [| PATRÚN]...) ORDUITHE ;;]... esac" #: builtins.c:194 -msgid "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" -msgstr "" -"if ORDUITHE; then ORDUITHE; [ elif ORDUITHE; then ORDUITHE; ]... [ else " -"ORDUITHE; ] fi" +msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgstr "if ORDUITHE; then ORDUITHE; [ elif ORDUITHE; then ORDUITHE; ]... [ else ORDUITHE; ] fi" #: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" @@ -2479,44 +2375,24 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v athróg] formáid [argóintí]" #: builtins.c:231 -msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-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 ...]" +msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-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 ...]" #: 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 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]" +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]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o rogha] [-DE] [ainm ...]" #: builtins.c:242 -msgid "" -"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"mapfile [-d TEORMHARCÓIR] [-n COMHAIREAMH] [-O BUNÚS] [-s COMHAIREAMH] [-t] " -"[-u TUAIRISCEOIR_COMHAID] [-C AISGHLAOCH] [-c CANDAM] [EAGAR]" +msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "mapfile [-d TEORMHARCÓIR] [-n COMHAIREAMH] [-O BUNÚS] [-s COMHAIREAMH] [-t] [-u TUAIRISCEOIR_COMHAID] [-C AISGHLAOCH] [-c CANDAM] [EAGAR]" #: builtins.c:244 -#, fuzzy -msgid "" -"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"readarray [-n COMHAIREAMH] [-O BUNÚS] [-s COMHAIREAMH] [-t] [-u " -"TUAIRISCEOIR_COMHAID] [-C AISGHLAOCH] [-c CANDAM] [EAGAR]" +msgid "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "readarray [-n COMHAIREAMH] [-O BUNÚS] [-s COMHAIREAMH] [-t] [-u TUAIRISCEOIR_COMHAID] [-C AISGHLAOCH] [-c CANDAM] [EAGAR]" #: builtins.c:256 msgid "" @@ -2533,8 +2409,7 @@ msgid "" " -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" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" "Sainigh nó taispeáin ailiasanna.\n" @@ -2580,30 +2455,25 @@ msgid "" " 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" +" 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" +" -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" +" -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" +" -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" @@ -2640,8 +2510,7 @@ 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" @@ -2653,8 +2522,7 @@ msgid "" " \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" +" 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" @@ -2668,8 +2536,7 @@ msgstr "" " laistigh den fheidhm.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear stádas scortha ORDÚ-IONSUITE-BLAOISCE, nó falsa sa chás " -"nach\n" +" 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 @@ -2690,38 +2557,30 @@ msgstr "" "Aischuir comhthéacs an ghlaoigh reatha fhoghnáthaimh.\n" " \n" " 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" +" '$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 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" -" Aischuirtear 0 ach sa chás nach bhfuil an bhlaosc ag rith feidhme " -"blaoisce, nó\n" +" Aischuirtear 0 ach sa chás nach bhfuil an bhlaosc ag rith feidhme blaoisce, nó\n" " sa chás go bhfuil SLONN neamhbhailí." #: 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" +" 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" +" 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" +" 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" @@ -2737,13 +2596,11 @@ msgid "" " \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" +" `..' 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" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" @@ -2772,8 +2629,7 @@ msgstr "" " Mar réamhshocrú, oibríonn 'pwd' faoi mar a bheadh '-L' sonraithe.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear luach de 0 ach sa chás go dtugtar rogha neamhbhailí nó nach " -"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 @@ -2821,8 +2677,7 @@ 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" +" 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" @@ -2837,20 +2692,17 @@ msgstr "" "Rith ordú simplí nó taispeáin eolas maidir le horduithe.\n" " \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" +" 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áidtear luach réamhshocraithe le haghaidh CONAIR a aimseoidh go " -"cinnte\n" +" -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á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 sa chás nach n-aimsítear " -"ORDÚ." +" Aischuirtear an stádas scortha ó ORDÚ, nó teip sa chás nach n-aimsítear ORDÚ." #: builtins.c:490 msgid "" @@ -2871,11 +2723,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 the value of each NAME to lower case on assignment\n" +" -l\tto convert NAMEs 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" +" -u\tto convert NAMEs to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2883,8 +2735,7 @@ msgid "" " 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" +" 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" @@ -2918,26 +2769,21 @@ msgid "" msgstr "" "Sainigh 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. Is\n" +" féidir le ROGHA a bheith ceann ar bith de na roghanna a ghlacann 'declare' leo.\n" " \n" -" Ní féidir athróga logánta a úsáid ach laistigh de fheidhm. Tá siad " -"infheicthe\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 ach sa chás go dtugtar rogha neamhbhailí, nó go " -"dtarlaíonn earráid,\n" +" 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 msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by " -"a\n" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -2967,8 +2813,7 @@ msgid "" msgstr "" "Scríobh na hargóintí ar an ngnáthaschur.\n" " \n" -" Taispeántar na hARGÓINTÍ ar an ngnáthaschur le carachtair spáis eatarthu " -"agus\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" @@ -2987,11 +2832,9 @@ msgstr "" " \\t\ttáib chothrománach\n" " \\v\ttáib ingearach\n" " \\\\\tcúlslais\n" -" \\0nnn\tan carachtar leis an gcód ASCII NNN (ochtnártha). Is féidir le " -"NNN\n" +" \\0nnn\tan carachtar leis an gcód ASCII NNN (ochtnártha). Is féidir le NNN\n" " \tbheith 0 go 3 digit ochtnártha ar fhad\n" -" \\xHH\tan carachtar ocht ngiotán leis an luach HH (heicsidheachúlach). " -"Is\n" +" \\xHH\tan carachtar ocht ngiotán leis an luach HH (heicsidheachúlach). Is\n" " \tféidir le HH bheith 1 nó 2 digit heicsidheachúlach ar fhad.\n" " \n" " Stádas Scortha:\n" @@ -3050,8 +2893,7 @@ msgstr "" msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\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" @@ -3063,8 +2905,7 @@ msgstr "" " an bhlaosc, agus rith na horduithe toraidh.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear stádas scortha an ordaithe, nó rath más ordú neamhnitheach " -"é." +" Aischuirtear stádas scortha an ordaithe, nó rath más ordú neamhnitheach é." #: builtins.c:646 msgid "" @@ -3112,8 +2953,7 @@ 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" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3121,18 +2961,15 @@ msgid "" " -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" +" 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." +" 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" +" 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" @@ -3141,8 +2978,7 @@ msgstr "" " -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" +" 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" @@ -3165,8 +3001,7 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" "Scoir de bhlaosc logála isteach.\n" @@ -3178,15 +3013,13 @@ msgstr "" 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" +" 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" +" -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" @@ -3200,21 +3033,17 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" Returns success or status of executed command; non-zero if an error occurs." msgstr "" "Taispeáin nó rith orduithe ón liosta staire.\n" " \n" -" Úsáidtear fc chun orduithe ón liosta staire a liostú, a chur in eagar, " -"nó a ath-rith.\n" +" Úsáidtear fc chun orduithe ón liosta staire a liostú, a chur in eagar, nó a ath-rith.\n" " Más uimhreacha iad CÉAD agus DEIREANACH, sonraíonn siad an raon, nó is\n" -" féidir le CÉAD bheith ina theaghrán, rud a chiallaíonn an t-ordú is " -"deireanaí a\n" +" féidir le CÉAD bheith ina theaghrán, rud a chiallaíonn an t-ordú is deireanaí a\n" " thosaíonn leis an teaghrán sin.\n" " \n" " Roghanna:\n" -" -e AINM_E\troghnaigh an clár eagarthóra atá le húsáid. FCEDIT an " -"réamhshocrú,\n" +" -e AINM_E\troghnaigh an clár eagarthóra atá le húsáid. FCEDIT an réamhshocrú,\n" " \tansin EDITOR, agus ansin vi.\n" " -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" @@ -3222,12 +3051,10 @@ msgstr "" " 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" +" 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." +" Stádas Scortha:n\\ Aischuirtear rath nó stádas an ordaithe rite; neamh-nialas má tharlaíonn earráid." #: builtins.c:758 msgid "" @@ -3242,23 +3069,18 @@ msgid "" msgstr "" "Bog tasc go dtí an tulra.\n" " \n" -" Cuirtear an tasc a shonraítear le SONRÚ_TASC sa tulra agus é mar an tasc " -"reatha.\n" -" Mura bhfuil SONRÚ_TASC ann, úsáidtear cibé tasc atá reatha de réir na " -"blaoisce.\n" +" Cuirtear an tasc a shonraítear le SONRÚ_TASC sa tulra agus é mar an tasc reatha.\n" +" Mura bhfuil SONRÚ_TASC ann, úsáidtear cibé tasc atá reatha de réir na blaoisce.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear stádas an ordaithe a cuireadh 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 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" +" 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" @@ -3266,10 +3088,8 @@ msgid "" msgstr "" "Bog tascanna go dtí an cúlra.\n" " \n" -" 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" +" 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 sa chás go dtarlaíonn earráid nó nach bhfuil\n" @@ -3280,8 +3100,7 @@ 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" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3300,7 +3119,6 @@ msgid "" msgstr "" #: builtins.c:812 -#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3315,24 +3133,21 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifying a help topic\n" +" PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" "Taispeáin eolas maidir le horduithe ionsuite.\n" " \n" " Taispeántar achoimrí na n-orduithe ionsuite. Má shonraítear PATRÚN,\n" -" taispeántar cabhair chuimsitheach faoi gach ordú a mheaitseálann " -"PATRÚN;\n" +" taispeántar cabhair chuimsitheach faoi gach ordú a mheaitseálann PATRÚN;\n" " i gcásanna eile taispeántar liosta na n-ábhar cabhrach.\n" " \n" " Roghanna:\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" +" -s\tní thaispeántar ach achoimre gairid úsáide le haghaidh gach ábhair a\n" " \tmheatseálann PATRÚN\n" " \n" " Argóintí:\n" @@ -3351,8 +3166,7 @@ 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. Negative\n" -" \t\toffsets count back from the end of the history list\n" +" -d offset\tdelete the history entry at position 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" @@ -3370,14 +3184,13 @@ msgid "" " \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" +" 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 "" -#: builtins.c:873 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3402,29 +3215,24 @@ msgid "" msgstr "" "Taispeáin stádas tascanna.\n" " \n" -" Liostáiltear na tascanna gníomhacha. Le SONRÚ_TAISC, ní thaispeántar ach " -"an tasc sin.\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" +" -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" +" 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" +" 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:900 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3447,16 +3255,14 @@ msgstr "" " \n" " Roghanna:\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" +" -h\tmarcáiltear gach SONRÚ_TAISC sa chaoi nach seolfar SIGHUP chuige má\n" " \tfhaigheann an bhlaosc féin SIGHUP\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ó " -"SONRÚ_TAISC neamhbhailí." +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó SONRÚ_TAISC neamhbhailí." -#: builtins.c:919 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3479,15 +3285,14 @@ msgid "" " Returns success unless an invalid option is given or an error occurs." msgstr "" -#: builtins.c:943 +#: builtins.c:942 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" +" 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" @@ -3524,34 +3329,30 @@ msgid "" " If the last ARG evaluates to 0, let returns 1; let returns 0 otherwise." msgstr "" -#: builtins.c:988 +#: builtins.c:987 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" +" 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" +" 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" +" 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" +" -e\tuse Readline to obtain the line in an interactive shell\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" +" -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" @@ -3569,14 +3370,12 @@ msgid "" " -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" +" 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 "" -#: builtins.c:1035 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3590,15 +3389,13 @@ msgstr "" "Fill ó fheidhm bhlaoisce.\n" " \n" " Filltear ó fheidhm nó ó script léite as comhad leis an luach scortha\n" -" a shonraítear i N. Má fhágtar N ar lár, is é an stádas scortha ná " -"stadas\n" +" a shonraítear i N. Má fhágtar N ar lár, is é an stádas scortha ná stadas\n" " an orduithe dheireanaigh a ritheadh laistigh den fheidhm nó script.\n" " \n" " Stádas Scortha:\n" -" Aischuirtear N, nó teip sa chás nach bhfuil an bhlaosc ag rith feidhme " -"nó scripte." +" Aischuirtear N, nó teip sa chás nach bhfuil an bhlaosc ag rith feidhme nó scripte." -#: builtins.c:1048 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3641,8 +3438,7 @@ msgid "" " 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" +" 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" @@ -3666,8 +3462,7 @@ msgid "" " 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" +" -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" @@ -3684,7 +3479,7 @@ msgid "" " Returns success unless an invalid option is given." msgstr "" -#: builtins.c:1133 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3696,8 +3491,7 @@ msgid "" " -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" +" 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" @@ -3706,13 +3500,12 @@ msgid "" " Returns success unless an invalid option is given or a NAME is read-only." msgstr "" -#: builtins.c:1155 +#: builtins.c:1154 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" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -3726,8 +3519,7 @@ msgid "" msgstr "" "Socraigh 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" +" 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" @@ -3739,10 +3531,9 @@ msgstr "" " 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í." +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go bhfuil AINM neamhbhailí." -#: builtins.c:1174 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3763,7 +3554,7 @@ msgid "" " Returns success unless an invalid option is given or NAME is invalid." msgstr "" -#: builtins.c:1196 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3774,7 +3565,7 @@ msgid "" " Returns success unless N is negative or greater than $#." msgstr "" -#: builtins.c:1208 builtins.c:1223 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3795,11 +3586,10 @@ msgstr "" " 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" +" 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:1239 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3819,14 +3609,13 @@ msgstr "" " chur ar fionraí.\n" " \n" " Roghanna:\n" -" -f\tcuirtear iallach ar an t-ordú, fiú más blaosc logála isteach atá " -"ann.\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:1255 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3860,8 +3649,7 @@ msgid "" " -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 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" @@ -3882,8 +3670,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -3909,7 +3696,7 @@ msgid "" " false or an invalid argument is given." msgstr "" -#: builtins.c:1337 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3922,12 +3709,11 @@ 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:1346 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -3942,12 +3728,11 @@ msgstr "" " Stádas Scortha:\n" " Éiríonn leis i gcónaí." -#: builtins.c:1358 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\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" @@ -3956,37 +3741,29 @@ msgid "" " 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" +" 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" +" 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 or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in 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." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" -#: builtins.c:1394 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4012,16 +3789,14 @@ msgid "" " 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." +" Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" -#: builtins.c:1425 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\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" @@ -4065,7 +3840,7 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1475 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4099,78 +3874,62 @@ msgstr "" " Aischuirtear rath ach sa chás go bhfuil MÓD neamhbhailí\n" " nó go sonraítear rogha neamhbhailí." -#: builtins.c:1495 -#, fuzzy +#: builtins.c:1494 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" +" 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" +" status is zero. If ID is a 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 "" "Fan go gcríochnaíonn tasc agus aischuir an 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ádais " -"chrí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" +" 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ádais chrí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ádais scortha.\n" " \n" " \n" "Stádas Scortha:\n" -" Aischuirtear stádas an AITHEANTAIS dheireanaigh. Teipeann ar an ordú má " -"tá\n" +" Aischuirtear stádas an AITHEANTAIS dheireanaigh. Teipeann ar an ordú má tá\n" " AITHEANTAS neamhbhailí nó má sonraítear rogha neamhbhailí." -#: builtins.c:1519 +#: builtins.c:1515 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" +" 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" +" Returns the status of the last PID; fails if PID is invalid or an invalid\n" " option is given." msgstr "" "Fan go gcríochnaíonn próiseas agus aischuir an stádas scortha.\n" " \n" " Fantar le gach próiseas ata sonraithe le AITHEANTAS, agus tuairiscítear\n" -" a stádais chríochnaithe. Gan AITHEANTAS, fantar le gach macphróiseas " -"gníomhach\n" -" reatha, agus aischuirtear 0. Ní mór d'AITHEANTAS bheith ina aitheantas " -"próisis.\n" +" a stádais chríochnaithe. Gan AITHEANTAS, fantar le gach macphróiseas gníomhach\n" +" reatha, agus aischuirtear 0. Ní mór d'AITHEANTAS bheith ina aitheantas próisis.\n" " \n" " \n" "Stádas Scortha:\n" -" Aischuirtear stádas an AITHEANTAIS dheireanaigh. Teipeann ar an ordú má " -"tá\n" +" Aischuirtear stádas an AITHEANTAIS dheireanaigh. Teipeann ar an ordú má tá\n" " AITHEANTAS neamhbhailí nó má sonraítear rogha neamhbhailí." -#: builtins.c:1534 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4192,7 +3951,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1548 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4217,13 +3976,12 @@ msgstr "" " \t\t(( SLONN3 ))\n" " \tdone\n" " Is sloinn uimhreachtúla iad SLONN1, SLONN2 agus SLONN3.\n" -" Má fhágtar slonn ar bith ar lár, oibríonn an lúib mar a bheadh luach de " -"1 air.\n" +" Má fhágtar slonn ar bith ar lár, oibríonn an lúib mar a bheadh luach de 1 air.\n" " \n" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1566 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4243,7 +4001,7 @@ msgid "" " Returns the status of the last command executed." msgstr "" -#: builtins.c:1587 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4259,7 +4017,7 @@ msgid "" " The return status is the return status of PIPELINE." msgstr "" -#: builtins.c:1604 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4277,28 +4035,23 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1616 +#: builtins.c:1612 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" +" 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" +" `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 "" -#: builtins.c:1633 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4316,7 +4069,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe deireanach a ritheadh." -#: builtins.c:1645 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4334,7 +4087,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe deireanach a ritheadh." -#: builtins.c:1657 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4356,13 +4109,12 @@ msgstr "" " Stádas Scortha:\n" " Aischuireann an t-ordú coproc stádas scortha de 0." -#: builtins.c:1671 +#: builtins.c:1667 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" +" 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" @@ -4373,14 +4125,13 @@ msgstr "" " \n" " Cruthaíonn feidhm bhlaoisce darbh ainm AINM. Nuair a úsáidtear mar ordú\n" " simplí é, ritheann AINM na hORDUITHE i gcomhthéacs na blaoisce glaoigh.\n" -" Nuair a ghlaoitear AINM, tugtar na hargóintí don fheidhm mar $0 ... $n, " -"agus\n" +" Nuair a ghlaoitear AINM, tugtar na hargóintí don fheidhm mar $0 ... $n, agus\n" " tá ainm na feidhme i $FUNCNAME.\n" " \n" " Stádas Scortha:\n" " Aischuirtear rath mura bhfuil AINM inléite amháin." -#: builtins.c:1685 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4398,7 +4149,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an ordaithe dheireanaigh a ritheadh." -#: builtins.c:1697 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4421,7 +4172,7 @@ msgstr "" " Stádas Scortha:\n" " Aischuirtear stádas an taisc atosaithe." -#: builtins.c:1712 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4432,16 +4183,13 @@ msgid "" " Returns 1 if EXPRESSION evaluates to 0; returns 0 otherwise." msgstr "" -#: builtins.c:1724 +#: builtins.c:1720 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" +" 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" @@ -4460,7 +4208,7 @@ msgid "" " 0 or 1 depending on value of EXPRESSION." msgstr "" -#: builtins.c:1750 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -4514,7 +4262,7 @@ msgid "" " \t\tcommands should be saved on the history list.\n" msgstr "" -#: builtins.c:1807 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -4545,7 +4293,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1841 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -4572,7 +4320,7 @@ msgid "" " change fails." msgstr "" -#: builtins.c:1871 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -4608,35 +4356,28 @@ msgstr "" " \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" +" -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\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." +" Aischuirtear rath muna bhfuil rogha neamhbhailí ann nó muna tharla earráid." -#: builtins.c:1902 -#, fuzzy +#: builtins.c:1898 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" +" arguments, list all shell options with an indication of whether or not each\n" +" is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4651,8 +4392,7 @@ msgid "" 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" +" Athraítear socrú gach rogha blaoisce AINM_ROGHA. Gan argóintí roghnacha ar bith,\n" " liostáiltear gach rogha blaoisce lena stádas socruithe nó díshocraithe.\n" " \n" " Roghanna:\n" @@ -4663,11 +4403,10 @@ msgstr "" " -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" +" Aischuirtear rath má tá AINM_ROGHA cumasaithe. Teipeann ar shopt má thugtar\n" " rogha neamhbhailí, nó má tá AINM_ROGHA díchumasaithe." -#: builtins.c:1923 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4675,45 +4414,36 @@ msgid "" " -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" +" 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" +" 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" +" 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" +" %(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" +" 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" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" -#: builtins.c:1957 +#: builtins.c:1953 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" +" 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" @@ -4733,13 +4463,12 @@ msgid "" " Returns success unless an invalid option is supplied or an error occurs." msgstr "" -#: builtins.c:1985 +#: builtins.c:1981 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" +" completions. If the optional WORD argument is supplied, matches against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -4747,25 +4476,20 @@ 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 dhéanann " -"iomlánaithe.\n" +" 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" " \n" " Stádas Scortha:\n" -" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go " -"dtarlaíonn earráid." +" Aischuirtear rath ach sa chás go dtugtar rogha neamhbhailí nó go dtarlaíonn earráid." -#: builtins.c:2000 +#: builtins.c:1996 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" +" 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" @@ -4787,26 +4511,21 @@ msgid "" " have a completion specification defined." msgstr "" -#: builtins.c:2030 +#: builtins.c:2026 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" +" 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" +" -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" +" -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" @@ -4819,17 +4538,15 @@ msgid "" " 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" +" 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" +" Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" -#: builtins.c:2066 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -4855,13 +4572,10 @@ msgstr "" #~ msgstr "times" #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "" -#~ "xrealloc: ní féidir %lu beart a athleithdháileadh (%lu beart leithdháilte)" +#~ msgstr "xrealloc: ní féidir %lu beart a athleithdháileadh (%lu beart leithdháilte)" #~ msgid "xrealloc: cannot allocate %lu bytes" #~ msgstr "xrealloc: ní féidir %lu beart a leithdháileadh" #~ msgid "xrealloc: %s:%d: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "" -#~ "xrealloc: %s:%d: ní féidir %lu beart a athleithdháileadh (%lu beart " -#~ "leithdháilte)" +#~ msgstr "xrealloc: %s:%d: ní féidir %lu beart a athleithdháileadh (%lu beart leithdháilte)" diff --git a/po/hr.po b/po/hr.po index 7d2125b91..fde493a75 100644 --- a/po/hr.po +++ b/po/hr.po @@ -1,140 +1,147 @@ # Translation of bash to Croatian. -# Copyright © 2012 Free Software Foundation, Inc. +# Copyright © 2016 Free Software Foundation, Inc. # This file is distributed under the same license as the bash package. -# Tomislav Krznar , 2012, 2013. # +# Tomislav Krznar , 2012, 2013. +# Božidar Putanec , 2018. msgid "" msgstr "" -"Project-Id-Version: bash 4.2\n" +"Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-27 14:15-0400\n" -"PO-Revision-Date: 2013-04-18 01:00+0200\n" -"Last-Translator: Tomislav Krznar \n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2018-05-21 18:15-0800\n" +"Last-Translator: Božidar Putanec \n" "Language-Team: Croatian \n" +"Language: 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" +"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 2.0\n" -#: arrayfunc.c:58 +#: arrayfunc.c:54 msgid "bad array subscript" -msgstr "neispravan indeks polja" +msgstr "nevaljani indeks polja" -#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 -#: variables.c:2922 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s: uklanja se atribut nameref" -#: arrayfunc.c:398 builtins/declare.def:831 +#: arrayfunc.c:393 builtins/declare.def:780 #, 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:582 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" -msgstr "%s: neispravan ključ asocijativnog polja" +msgstr "%s: nevaljani ključ asocijativnoga polja" -#: arrayfunc.c:584 +#: arrayfunc.c:580 #, 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:629 +#: arrayfunc.c:625 #, 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:436 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" -msgstr "%s: ne mogu napraviti: %s" +msgstr "%s: nije moguće napraviti: %s" -#: bashline.c:4111 +#: bashline.c:4091 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:4221 +#: bashline.c:4189 #, 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:4250 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" -msgstr "nema zatvorene „%c” u %s" +msgstr "nema zaključnoga „%c“ u %s" -#: bashline.c:4284 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" -msgstr "%s: nedostaje dvotočje za razdvajanje" +msgstr "%s: nema razdjelnika dvotočke" -#: braces.c:331 +#: braces.c:329 #, 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:429 +# Brace expansion is a mechanism by which arbitrary strings may be generated +#: braces.c:427 #, c-format -msgid "brace expansion: failed to allocate memory for %u elements" +msgid "brace expansion: failed to allocate memory for %d elements" msgstr "" +"brace expansion: nije uspjelo dodijeliti memoriju za %d elemenata\n" +"(primjer ekspanzije unutar vitičastih zagrada: echo a{d,c}e -> ade, ace)" -#: braces.c:473 +#: braces.c:471 #, 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:131 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" -msgstr "„%s”: neispravno drugo ime" +msgstr "„%s“: nevaljano ime aliasa" -#: builtins/bind.def:122 builtins/bind.def:125 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" -msgstr "uređivanje redaka nije omogućeno" +msgstr "redigiranje retka nije omogućeno" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" -msgstr "„%s”: neispravno ime tipkovničke mape" +msgstr "„%s“: nevaljano ime za keymap" -#: builtins/bind.def:252 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" -msgstr "%s: ne mogu čitati: %s" +msgstr "%s: nije moguće pročitati: %s" + +#: builtins/bind.def:270 +#, c-format +msgid "`%s': cannot unbind" +msgstr "„%s“: nije moguće razvezati" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" -msgstr "„%s”: nepoznato ime funkcije" +msgstr "„%s“: nepoznato ime funkcije" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, 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:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s se može pozvati pomoću " -#: builtins/bind.def:353 builtins/bind.def:368 -#, c-format -msgid "`%s': cannot unbind" -msgstr "„%s”: ne mogu ukloniti vezu" - -#: builtins/break.def:77 builtins/break.def:119 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" -msgstr "broj ponavljanja" +msgstr "brojač ponavljanja" -#: builtins/break.def:139 +#: builtins/break.def:141 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 "" @@ -142,241 +149,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:319 +#: builtins/cd.def:321 msgid "HOME not set" -msgstr "HOME nije postavljen" +msgstr "HOME varijabla nije definirana" -#: builtins/cd.def:327 builtins/common.c:161 test.c:889 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "previše argumenata" -#: builtins/cd.def:334 -#, fuzzy +#: builtins/cd.def:336 msgid "null directory" -msgstr "nema drugog direktorija" +msgstr "null direktorij" -#: builtins/cd.def:345 +#: builtins/cd.def:347 msgid "OLDPWD not set" -msgstr "OLDPWD nije postavljen" +msgstr "OLDPWD nije postavljeni" -#: builtins/common.c:96 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "redak %d: " -#: builtins/common.c:134 error.c:264 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "upozorenje: " -#: builtins/common.c:148 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: uporaba: " -#: builtins/common.c:193 shell.c:510 shell.c:838 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: opcija zahtijeva argument" -#: builtins/common.c:200 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" -msgstr "%s: potreban je numerički argument" +msgstr "%s: zahtijeva se numerički argument" -#: builtins/common.c:207 +#: builtins/common.c:213 #, c-format msgid "%s: not found" -msgstr "%s: nije pronađen" +msgstr "%s: nije pronađeno" -#: builtins/common.c:216 shell.c:851 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" -msgstr "%s: neispravna opcija" +msgstr "%s: nevaljana opcija" -#: builtins/common.c:223 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" -msgstr "%s: neispravno ime opcije" +msgstr "%s: nevaljano ime opcije" -#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" -msgstr "„%s”: nije ispravan identifikator" +msgstr "„%s“: nije valjani identifikator" -#: builtins/common.c:240 +#: builtins/common.c:246 msgid "invalid octal number" -msgstr "neispravan oktalni broj" +msgstr "nevaljani oktalni broj" -#: builtins/common.c:242 +#: builtins/common.c:248 msgid "invalid hex number" -msgstr "neispravan heksadekadski broj" +msgstr "nevaljani heksadecimalni broj" -#: builtins/common.c:244 expr.c:1538 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" -msgstr "neispravan broj" +msgstr "nevaljani broj" -#: builtins/common.c:252 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" -msgstr "%s: neispravno naveden signal" +msgstr "%s: nevaljana specifikacija signala" -#: builtins/common.c:259 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" -msgstr "„%s”: nije pid ili ispravno naveden zadatak" +msgstr "„%s“: nije PID ili valjani pokazatelj posla" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: varijabla samo za čitanje" -#: builtins/common.c:274 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" -msgstr "%s: %s je izvan granica" +msgstr "%s: %s je izvan raspona" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argument" -#: builtins/common.c:276 +#: builtins/common.c:282 #, c-format msgid "%s out of range" -msgstr "%s je izvan granica" +msgstr "%s je izvan raspona" -#: builtins/common.c:284 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" -msgstr "%s: nema takvog zadatka" +msgstr "%s: nema takvoga posla" -#: builtins/common.c:292 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" -msgstr "%s: nema kontrole zadataka" +msgstr "%s: nema upravljanja poslom u ovoj ljuski" -#: builtins/common.c:294 +#: builtins/common.c:300 msgid "no job control" -msgstr "nema kontrole zadataka" +msgstr "nema upravljanja poslom u ovoj ljuski" -#: builtins/common.c:304 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" -msgstr "%s: ograničeno" +msgstr "%s: ograničeni način" -#: builtins/common.c:306 +#: builtins/common.c:312 msgid "restricted" -msgstr "ograničeno" +msgstr "ograničeni način" -#: builtins/common.c:314 +#: builtins/common.c:320 #, 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:323 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "greška pisanja: %s" -#: builtins/common.c:331 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "greška pri postavljanju svojstava terminala: %s" -#: builtins/common.c:333 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "greška pri preuzimanju svojstava terminala: %s" -#: builtins/common.c:579 +#: builtins/common.c:585 #, 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:645 builtins/common.c:647 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" -msgstr "%s: višeznačan navod zadatka" +msgstr "%s: dvosmisleni pokazatelj posla" -#: builtins/common.c:908 +#: builtins/common.c:918 msgid "help not available in this version" -msgstr "" +msgstr "u ovoj inačici pomoć nije ugrađena" #: builtins/complete.def:278 #, 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:653 -#: builtins/complete.def:874 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" -msgstr "%s: nije navedeno nadopunjavanje" +msgstr "%s: dovršavanje nije specificirano" -#: builtins/complete.def:707 +#: builtins/complete.def:699 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:709 +#: builtins/complete.def:701 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:847 +#: builtins/complete.def:831 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:132 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "može se koristiti samo u funkciji" -#: builtins/declare.def:369 builtins/declare.def:736 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" -msgstr "" +msgstr "%s: referentna varijabla ne može biti polje" -#: builtins/declare.def:380 variables.c:3161 +#: builtins/declare.def:343 variables.c:2959 #, 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:385 variables.c:2018 variables.c:3083 variables.c:3095 -#: variables.c:3158 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 #, c-format msgid "%s: circular name reference" -msgstr "" +msgstr "%s: kružna referencija na ime" -#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 -#, fuzzy, c-format +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "„%s”: neispravno drugo ime" +msgstr "„%s“: nevaljano ime varijable za referenciju na ime" -#: builtins/declare.def:500 +#: builtins/declare.def:463 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:512 execute_cmd.c:5797 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: funkcija samo za čitanje" -#: builtins/declare.def:804 +#: builtins/declare.def:753 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s: dodjeljivanje citiranoga složenog polja je zastarjelo" -#: builtins/declare.def:818 +#: builtins/declare.def:767 #, 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:825 builtins/read.def:784 +#: builtins/declare.def:774 builtins/read.def:751 #, 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" @@ -385,17 +391,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 @@ -405,119 +411,118 @@ 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:138 builtins/hash.def:184 execute_cmd.c:5629 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: to je direktorij" -#: builtins/evalfile.c:144 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: nije obična datoteka" -#: builtins/evalfile.c:153 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: datoteka je prevelika" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, 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:155 builtins/exec.def:157 builtins/exec.def:237 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, 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:64 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "odjava\n" -#: builtins/exit.def:89 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" -msgstr "nije prijavna ljuska: koristite „exit”" +msgstr "nije prijavna ljuska: odjavite se s „exit“" -#: builtins/exit.def:121 +# stopped > pauzirano ili zaustavljeno +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" -msgstr "Ima zaustavljenih zadataka.\n" +msgstr "Ima zaustavljenih poslova.\n" -#: builtins/exit.def:123 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" -msgstr "Ima pokrenutih zadataka.\n" +msgstr "Ima pokrenutih poslova.\n" -#: builtins/fc.def:265 +#: builtins/fc.def:269 msgid "no command found" msgstr "naredba nije pronađena" -#: builtins/fc.def:323 builtins/fc.def:372 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" -msgstr "specifikacija povijesti" +msgstr "prikaz povijesti naredbi" -#: builtins/fc.def:393 +#: builtins/fc.def:397 #, 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:152 builtins/jobs.def:284 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" -msgstr "trenutno" +msgstr "trenutačno" -#: builtins/fg_bg.def:161 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" -msgstr "zadatak %d pokrenut bez kontrole zadataka" +msgstr "posao %d pokrenuti je bez mogućnosti upravljanja" #: 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:91 +#: builtins/hash.def:92 msgid "hashing disabled" -msgstr "raspršivanje onemogućeno" +msgstr "hash-tablica je onemogućena" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, 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:266 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" -msgstr "pogoci\tnaredba\n" +msgstr "pogodci\tnaredba\n" -#: builtins/help.def:133 +#: builtins/help.def:135 +#, c-format 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:185 +#: builtins/help.def:187 #, c-format -msgid "" -"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"nisu pronađene teme pomoći za „%s”. Pokušajte „help help”, „man -k %s” ili " -"„info %s”." +msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "nisu pronađene teme pomoći za „%s“. Pokušajte s „help help“, „man -k %s“ ili „info %s“." -#: builtins/help.def:224 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" -msgstr "%s: ne mogu otvoriti: %s" +msgstr "%s: nije moguće otvoriti: %s" -#: builtins/help.def:524 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -528,30 +533,28 @@ 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 „help ime” za više podataka o funkciji „ime”.\n" -"Koristite „info bash” za više općenitih podataka o ljusci.\n" -"Koristite „man -k” ili „info” za više podataka o naredbama izvan ovog " -"popisa.\n" +"Ove bash naredbe su interno definirane. Upišite „help“ za prikaz popisa.\n" +"Upišite „help ime“ za više podataka o funkciji „ime“.\n" +"Koristite „info bash“ za više općenitih podataka o ljusci.\n" +"Koristite „man -k“ ili „info“ za više podataka o naredbama izvan ovog popisa.\n" "\n" "Zvjezdica (*) pokraj imena označava onemogućenu naredbu.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 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:197 builtins/history.def:212 -#: builtins/history.def:229 builtins/history.def:241 builtins/history.def:248 +#: builtins/history.def:187 msgid "history position" -msgstr "mjesto u povijesti" +msgstr "mjesto u povijesti naredbi" -#: builtins/history.def:331 -#, fuzzy, c-format +#: builtins/history.def:264 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: neispravno ime opcije" +msgstr "%s: nevaljana vremenska oznaka" -#: builtins/history.def:442 +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: proširenje povijesti nije uspjelo" @@ -563,89 +566,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:200 +#: builtins/kill.def:202 #, 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:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Nepoznata greška" -#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 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:271 builtins/read.def:305 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" -msgstr "%s: neispravno naveden opisnik datoteke" +msgstr "%s: nevaljana specifikacija deskriptora datoteke" -#: builtins/mapfile.def:279 builtins/read.def:312 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" -msgstr "%d: neispravan opisnik datoteke: %s" +msgstr "%d: nevaljani deskriptor datoteke: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" -msgstr "%s: neispravan broj redaka" +msgstr "%s: nevaljani količina redaka" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" -msgstr "%s: neispravan izvor polja" +msgstr "%s: nevaljani početak polja" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" -msgstr "%s: neispravan element povratnog poziva" +msgstr "%s: nevaljana količina od callback" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "prazno ime varijable polja" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:371 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:416 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" -msgstr "„%s”: nedostaje znak oblika" +msgstr "„%s“: nedostaje znak za format" -#: builtins/printf.def:471 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" -msgstr "„%c”: neispravno naveden oblik vremena" +msgstr "„%c“: nevaljana specifikacija za format vremena" -#: builtins/printf.def:673 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" -msgstr "„%c”: neispravan znak oblika" +msgstr "„%c“: nevaljani znak za format" -#: builtins/printf.def:699 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "upozorenje: %s: %s" -#: builtins/printf.def:785 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" -msgstr "" +msgstr "greška pri analizi: %s" -#: builtins/printf.def:882 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" -msgstr "nedostaje heksadekadska znamenka za \\x" +msgstr "nedostaje heksadecimalna znamenka za \\x" -#: builtins/printf.def:897 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "nedostaje unicode znamenka za \\%c" @@ -655,23 +658,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:480 +#: builtins/pushd.def:475 msgid "" -msgstr "" +msgstr "" -#: builtins/pushd.def:524 +#: builtins/pushd.def:519 msgid "directory stack empty" -msgstr "stog direktorija je prazan" +msgstr "snop direktorija je prazan" -#: builtins/pushd.def:526 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "indeks stoga direktorija" -#: builtins/pushd.def:701 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -686,36 +689,30 @@ msgid "" " \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" +" +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" +" -N\tDisplays the Nth entry counting from the right of the list shown 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:723 +#: builtins/pushd.def:718 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" @@ -739,8 +736,25 @@ 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:748 +#: builtins/pushd.def:743 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" @@ -760,138 +774,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:277 +#: 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:729 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "greška čitanja: %d: %s" -#: builtins/return.def:68 +#: builtins/return.def:71 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:834 +#: builtins/set.def:841 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:881 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" -msgstr "%s: ne mogu poništiti" +msgstr "%s: nije moguće poništiti" -#: builtins/set.def:902 variables.c:3597 +#: builtins/set.def:909 variables.c:3389 #, 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:915 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: nije varijabla polja" -#: builtins/setattr.def:189 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: nije funkcija" -#: builtins/setattr.def:194 -#, fuzzy, c-format +#: builtins/setattr.def:196 +#, 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 "brojač pomaka" -#: builtins/shopt.def:301 +#: builtins/shopt.def:289 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:403 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" -msgstr "%s: neispravno ime opcije ljuske" +msgstr "%s: nevaljano ime za opciju ljuske" -#: builtins/source.def:128 +#: builtins/source.def:131 msgid "filename argument required" -msgstr "potrebno je ime datoteke kao argument" +msgstr "zahtijeva se ime datoteke kao argument" -#: builtins/source.def:154 +#: builtins/source.def:157 #, 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:235 +#: builtins/type.def:236 #, 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:256 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s je ključna riječ ljuske\n" -#: builtins/type.def:275 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s je funkcija\n" -#: builtins/type.def:299 -#, fuzzy, c-format +#: builtins/type.def:300 +#, 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:301 +#: builtins/type.def:302 #, 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:323 builtins/type.def:408 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s je %s\n" -#: builtins/type.def:343 +#: builtins/type.def:344 #, 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:396 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" -msgstr "%s: neispravan argument ograničenja" +msgstr "%s: nevaljani argument za ograničenje" -#: builtins/ulimit.def:422 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" -msgstr "„%c”: neispravna naredba" +msgstr "„%c“: loša naredba" -#: builtins/ulimit.def:451 +#: builtins/ulimit.def:453 #, 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:477 +#: builtins/ulimit.def:479 msgid "limit" msgstr "ograničenje" -#: builtins/ulimit.def:489 builtins/ulimit.def:789 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, 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" @@ -900,434 +930,426 @@ msgstr "oktalni broj" #: builtins/umask.def:232 #, c-format msgid "`%c': invalid symbolic mode operator" -msgstr "„%c”: neispravan operator simboličkog načina" +msgstr "„%c“: nevaljani operator u simboličkom načinu" #: builtins/umask.def:287 #, c-format msgid "`%c': invalid symbolic mode character" -msgstr "„%c”: neispravan znak simboličkog načina" +msgstr "„%c“: nevaljani znak u simboličkom načinu" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " redak " -#: error.c:164 +#: error.c:165 #, c-format msgid "last command: %s\n" msgstr "posljednja naredba: %s\n" -#: error.c:172 +#: error.c:173 #, c-format msgid "Aborting..." -msgstr "Prekidam..." +msgstr "Prekida se..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:287 +#: error.c:288 #, c-format msgid "INFORM: " -msgstr "" +msgstr "informacije: " -#: error.c:462 +#: error.c:463 msgid "unknown command error" msgstr "nepoznata greška naredbe" -#: error.c:463 +#: error.c:464 msgid "bad command type" -msgstr "neispravna vrsta naredbe" +msgstr "loša vrsta naredbe" -#: error.c:464 +#: error.c:465 msgid "bad connector" -msgstr "neispravno spajanje" +msgstr "loš konektor" -#: error.c:465 +#: error.c:466 msgid "bad jump" -msgstr "neispravan skok" +msgstr "loši skok" -#: error.c:503 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: nepovezana varijabla" -#: eval.c:242 +#: eval.c:209 #, 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:536 +#: execute_cmd.c:527 #, 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:1294 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" -msgstr "TIMEFORMAT: „%c”: neispravan znak oblika" +msgstr "TIMEFORMAT: „%c“: nevaljani znak za format" -#: execute_cmd.c:2330 +#: execute_cmd.c:2273 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc(): coproc [%d:%s] još uvijek postoji" -#: execute_cmd.c:2456 +#: execute_cmd.c:2377 msgid "pipe error" -msgstr "greška cjevovoda" +msgstr "greška cijevi" -#: execute_cmd.c:4624 +#: execute_cmd.c:4496 #, 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:4636 +#: execute_cmd.c:4508 #, 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:4742 +#: execute_cmd.c:4616 #, 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:5285 +#: execute_cmd.c:5144 #, 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:5383 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: naredba nije pronađena" -#: execute_cmd.c:5627 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5665 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" -msgstr "%s: %s: neispravan tumač" +msgstr "%s: %s: loši interpreter" -#: execute_cmd.c:5702 -#, fuzzy, c-format +#: execute_cmd.c:5545 +#, 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:5788 -#, fuzzy, c-format +#: execute_cmd.c:5623 +#, 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:5840 +#: execute_cmd.c:5675 #, 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:263 +#: expr.c:259 msgid "expression recursion level exceeded" -msgstr "razina rekurzije izraza je prekoračena" +msgstr "izraz ima preveliki broj rekurzija" -#: expr.c:291 +#: expr.c:283 msgid "recursion stack underflow" -msgstr "podljev stoga rekurzije" +msgstr "snop rekurzija je prazan" -#: expr.c:453 +#: expr.c:431 msgid "syntax error in expression" -msgstr "sintaksna greška u izrazu" +msgstr "sintaktička greška u izrazu" -#: expr.c:497 +#: expr.c:475 msgid "attempted assignment to non-variable" -msgstr "pokušaj pridruživanja ne-varijabli" +msgstr "vrijednost se može dodijeliti samo varijabli" -#: expr.c:506 -#, fuzzy -msgid "syntax error in variable assignment" -msgstr "sintaksna greška u izrazu" - -#: expr.c:520 expr.c:886 +#: expr.c:495 expr.c:858 msgid "division by 0" msgstr "dijeljenje s 0" -#: expr.c:567 +#: expr.c:542 msgid "bug: bad expassign token" -msgstr "greška: neispravan simbol expassign" +msgstr "**interna greška** : loši token u izrazu za dodjelu" -#: expr.c:621 +#: expr.c:595 msgid "`:' expected for conditional expression" -msgstr "očekujem „:” za uvjetni izraz" +msgstr "znak „:“ je nužan u uvjetnom izrazu" -#: expr.c:947 +#: expr.c:919 msgid "exponent less than 0" msgstr "eksponent je manji od 0" -#: expr.c:1004 +#: expr.c:976 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:1030 +#: expr.c:1002 msgid "missing `)'" -msgstr "nedostaje „)”" +msgstr "nema „)“" -#: expr.c:1081 expr.c:1458 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" -msgstr "sintaksna greška: očekujem operand" +msgstr "sintaktička greška: očekivao se operand" -#: expr.c:1460 +#: expr.c:1395 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:1484 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" -msgstr "%s%s%s: %s (simbol greške je „%s”)" +msgstr "%s%s%s: %s (simbol greške je „%s“)" -#: expr.c:1542 +#: expr.c:1477 msgid "invalid arithmetic base" -msgstr "neispravna aritmetička baza" +msgstr "nevaljana aritmetička baza" -#: expr.c:1562 +#: expr.c:1497 msgid "value too great for base" msgstr "vrijednost baze je prevelika" -#: expr.c:1611 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" -msgstr "%s: greška izraza\n" +msgstr "%s: greška u izrazu\n" -#: general.c:69 +#: general.c:68 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:99 subst.c:5858 +#: input.c:102 subst.c:5858 #, 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:266 +#: input.c:271 #, 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:274 +#: input.c:279 #, 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 msgid "start_pipeline: pgrp pipe" -msgstr "start_pipeline: pgrp pipe" +msgstr "start_pipeline(): pgrp pipe (procesna grupa cijevi)" -#: jobs.c:1080 +#: jobs.c:1035 #, 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:1199 +#: jobs.c:1154 #, 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:1303 +#: jobs.c:1258 #, 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:1306 +#: jobs.c:1261 #, 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:1635 +#: jobs.c:1590 #, 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:1650 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Signal %d" -#: jobs.c:1664 jobs.c:1690 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Gotovo" -#: jobs.c:1669 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" -msgstr "Zaustavljen" +msgstr "Zaustavljeno" -#: jobs.c:1673 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" -msgstr "Zaustavljen(%s)" +msgstr "Zaustavljeno(%s)" -#: jobs.c:1677 +#: jobs.c:1632 msgid "Running" -msgstr "Pokrenut" +msgstr "Pokrenuto" -#: jobs.c:1694 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Gotovo(%d)" -#: jobs.c:1696 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Izlaz %d" -#: jobs.c:1699 +#: jobs.c:1654 msgid "Unknown status" -msgstr "Nepoznato stanje" +msgstr "Nepoznati status" -#: jobs.c:1786 +#: jobs.c:1741 #, c-format msgid "(core dumped) " -msgstr "(jezgra izbačena) " +msgstr "(stanje memorije zapisano) " -#: jobs.c:1805 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2033 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" -msgstr "" +msgstr "postavljanje procesne grupe %2$ld od potomka %1$ld" -#: jobs.c:2395 nojobs.c:657 +#: jobs.c:2347 nojobs.c:654 #, 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:2687 +#: jobs.c:2602 #, 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:3048 +#: jobs.c:2929 #, 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:3355 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" -msgstr "%s: zadatak je dovršen" +msgstr "%s: posao je prekinut" -#: jobs.c:3364 +#: jobs.c:3230 #, 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:3590 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "" +msgstr "waitchld(): omogući WNOHANG da se izbjegne neodređeno blokiranje" -#: jobs.c:4114 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: redak %d: " -#: jobs.c:4128 nojobs.c:900 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" -msgstr " (jezgra izbačena)" +msgstr " (stanje memorije zapisano)" -#: jobs.c:4140 jobs.c:4153 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" -msgstr "(sadašnji wd: %s)\n" +msgstr "(radni direktorij je sada: %s)\n" -#: jobs.c:4185 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" -msgstr "initialize_job_control: getpgrp nije uspio" - -#: jobs.c:4241 -#, fuzzy -msgid "initialize_job_control: no job control in background" -msgstr "initialize_job_control: setpgid" +msgstr "initialize_job_control: neuspješni getpgrp()" -#: jobs.c:4257 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" -msgstr "" +msgstr "initialize_job_control: line discipline" -#: jobs.c:4267 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" -msgstr "initialize_job_control: setpgid" +msgstr "initialize_job_control: setpgid()" -#: jobs.c:4288 jobs.c:4297 +#: jobs.c:4135 jobs.c:4144 #, 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:4302 +#: jobs.c:4149 msgid "no job control in this shell" -msgstr "nema kontrole zadataka u ovoj ljusci" +msgstr "nema kontrole poslova u ovoj ljusci" -#: lib/malloc/malloc.c:306 +#: lib/malloc/malloc.c:296 #, c-format msgid "malloc: failed assertion: %s\n" -msgstr "" +msgstr "malloc(): neuspješni kontrolni test: %s\n" -#: lib/malloc/malloc.c:322 +#: lib/malloc/malloc.c:312 #, 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:323 +#: lib/malloc/malloc.c:313 msgid "unknown" msgstr "nepoznato" -#: lib/malloc/malloc.c:811 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" -msgstr "" +msgstr "malloc(): prepisani je blok na popisu slobodne memorije" -#: lib/malloc/malloc.c:888 +#: lib/malloc/malloc.c:878 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:891 +#: lib/malloc/malloc.c:881 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:910 +#: lib/malloc/malloc.c:900 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:916 +#: lib/malloc/malloc.c:906 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:1015 +#: lib/malloc/malloc.c:1005 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:1030 +#: lib/malloc/malloc.c:1020 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:1036 +#: lib/malloc/malloc.c:1026 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 @@ -1337,36 +1359,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:205 +#: locale.c:200 #, 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:207 +#: locale.c:202 #, 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:272 +#: locale.c:259 #, 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:274 +#: locale.c:261 #, 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 $_" @@ -1379,323 +1401,317 @@ 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:317 +#: make_cmd.c:329 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:319 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" -msgstr "sintaksna greška: neočekivana „;”" +msgstr "sintaktička greška: neočekivani „;“ znak" -#: make_cmd.c:320 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" -msgstr "sintaksna greška: „((%s))”" +msgstr "sintaktička greška: „((%s))“" -#: make_cmd.c:572 +#: make_cmd.c:584 #, 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:657 +#: make_cmd.c:669 #, 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:756 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "" +msgstr "make_redirection(): instrukcija za preusmjeravanje „%d“ je izvan raspona" -#: parse.y:2369 +#: parse.y:2324 #, c-format -msgid "" -"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " -"truncated" -msgstr "" +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:2772 +#: parse.y:2700 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "maksimalni broj za here-document je prekoračeni" -#: parse.y:3511 parse.y:3881 +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" -msgstr "neočekivani EOF pri traženju odgovarajućeg „%c”" +msgstr "neočekivani EOF pri traženju odgovarajućeg „%c“" -#: parse.y:4581 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" -msgstr "neočekivani EOF pri traženju „]]”" +msgstr "neočekivani EOF pri traženju „]]“" -#: parse.y:4586 +#: parse.y:4415 #, 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:4590 +#: parse.y:4419 msgid "syntax error in conditional expression" -msgstr "sintaksna greška u uvjetnom izrazu" +msgstr "sintaktička greška u uvjetnom izrazu" -#: parse.y:4668 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" -msgstr "neočekivani simbol „%s”, očekujem „)”" +msgstr "neočekivani token „%s“ umjesto očekivane „)“" -#: parse.y:4672 +#: parse.y:4501 msgid "expected `)'" -msgstr "očekujem „)”" +msgstr "očekivana je „)“" -#: parse.y:4700 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" -msgstr "neočekivani argument „%s” uvjetnom unarnom operatoru" +msgstr "neočekivani argument „%s“ uvjetnom unarnom operatoru" -#: parse.y:4704 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" -msgstr "neočekivani argument uvjetnom unarnom operatoru" +msgstr "neočekivani argument za uvjetni unarni operator" -#: parse.y:4750 +#: parse.y:4579 #, 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:4754 +#: parse.y:4583 msgid "conditional binary operator expected" -msgstr "očekujem uvjetni binarni operator" +msgstr "očekivao se uvjetni binarni operator" -#: parse.y:4776 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" -msgstr "neočekivani argument „%s” uvjetnom binarnom operatoru" +msgstr "neočekivani argument „%s“ za uvjetni binarni operator" -#: parse.y:4780 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" -msgstr "neočekivani argument uvjetnom binarnom operatoru" +msgstr "neočekivani argument za uvjetni binarni operator" -#: parse.y:4791 +#: parse.y:4620 #, 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:4794 +#: parse.y:4623 #, 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:4798 +#: parse.y:4627 #, 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:6220 +#: parse.y:5996 #, 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:6238 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" -msgstr "sintaksna greška kod „%s”" +msgstr "sintaktička greška blizu „%s“" -#: parse.y:6248 +#: parse.y:6024 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:6248 +#: parse.y:6024 msgid "syntax error" -msgstr "sintaksna greška" +msgstr "sintaktička greška" -#: parse.y:6310 +#: parse.y:6086 #, 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:6472 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" -msgstr "neočekivani EOF pri traženju odgovarajuće „)”" +msgstr "neočekivani EOF pri traženju odgovarajuće „)“" -#: pcomplete.c:1132 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" -msgstr "completion: funkcija „%s” nije pronađena" +msgstr "completion(): funkcija „%s“ nije pronađena" -#: pcomplete.c:1722 +#: pcomplete.c:1646 #, 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:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" -msgstr "" +msgstr "print_command(): loši konektor „%d“" -#: print_cmd.c:373 +#: 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:378 +#: 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:382 +#: 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:1538 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" -msgstr "" +msgstr "cprintf(): „%c“: nevaljani znak za format" -#: redir.c:121 redir.c:167 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" -msgstr "opisnik datoteke izvan granica" +msgstr "deskriptor datoteke je izvan raspona" -#: redir.c:174 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" -msgstr "%s: višeznačno preusmjeravanje" +msgstr "%s: dvosmisleno preusmjeravanje" -#: redir.c:178 +#: redir.c:182 #, 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:183 +#: redir.c:187 #, 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:188 +#: redir.c:192 #, 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:192 +#: redir.c:196 #, 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:588 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port nije podržan bez umrežavanja" -#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 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:343 +#: shell.c:347 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:347 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp mora biti ispravno ime direktorija" -#: shell.c:798 -msgid "pretty-printing mode ignored in interactive shells" -msgstr "" - -#: shell.c:940 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" -msgstr "%c%c: neispravna opcija" +msgstr "%c%c: nevaljana opcija" -#: shell.c:1299 +#: shell.c:1282 #, 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:1306 +#: shell.c:1289 #, 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:1494 +#: shell.c:1458 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "nije moguće pokrenuti debugger; debugiranje je onemogućeno" -#: shell.c:1608 -#, fuzzy, c-format +#: shell.c:1566 +#, c-format msgid "%s: Is a directory" msgstr "%s: to je direktorij" -#: shell.c:1826 +#: shell.c:1777 msgid "I have no name!" msgstr "Nemam ime!" -#: shell.c:1980 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, inačica %s-(%s)\n" -#: shell.c:1981 +#: shell.c:1931 #, 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:1983 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU dugačke opcije:\n" -#: shell.c:1987 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Opcije ljuske:\n" -#: shell.c:1988 +#: shell.c:1938 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:2003 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" -msgstr "" +msgstr "\t-%s ili -o opcija\n" -#: shell.c:2009 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "" +msgstr "„%s -c \"help set\"“ pokaže vam dodatne informacije o opcijama ljuske.\n" -#: shell.c:2010 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "" +msgstr "„%s -c help set“ pokaže vam više informacija o ugrađenim funkcijama ljuske.\n" -#: shell.c:2011 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" -msgstr "Koristite naredbu „bashbug” za prijavljivanje grešaka.\n" +msgstr "Koristite naredbu „bashbug“ za prijavljivanje grešaka.\n" -#: shell.c:2013 +#: shell.c:1963 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "bash Web stranica: \n" -#: shell.c:2014 +#: shell.c:1964 #, c-format msgid "General help using GNU software: \n" -msgstr "" +msgstr "Općenita pomoć za korištenje GNU softvera: \n" -#: sig.c:695 +#: sig.c:707 #, 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" @@ -1711,11 +1727,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" @@ -1727,15 +1743,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" @@ -1743,11 +1759,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" @@ -1755,7 +1771,7 @@ msgstr "Budilica" #: siglist.c:111 msgid "Terminated" -msgstr "Završen" +msgstr "Završeno" #: siglist.c:115 msgid "Urgent IO condition" @@ -1763,15 +1779,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)" @@ -1783,7 +1799,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" @@ -1795,19 +1811,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" @@ -1819,7 +1835,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" @@ -1839,15 +1855,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" @@ -1855,254 +1871,241 @@ 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:1450 subst.c:1641 +#: subst.c:1445 subst.c:1608 #, 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:3209 +#: subst.c:3154 #, 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:5734 subst.c:5750 +#: subst.c:5740 subst.c:5756 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:5796 +#: subst.c:5798 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 #, 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 #, 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 #, 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:5990 -#, fuzzy +#: subst.c:5959 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:6121 +#: subst.c:6083 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:6164 +#: subst.c:6127 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:6190 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "" -"command_substitute: ne mogu udvostručiti cjevovod kao opisnik datoteke 1" +msgstr "command_substitute(): nije moguće kopirati cijev kao deskriptor datoteke 1" -#: subst.c:6641 subst.c:9483 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" -msgstr "" +msgstr "%s: nevaljano ime varijable za naziv referencije" -#: subst.c:6737 subst.c:6755 subst.c:6903 -#, fuzzy, c-format +#: subst.c:6666 subst.c:8351 subst.c:8371 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: loša supstitucija" + +#: subst.c:6800 +#, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: neispravan broj redaka" +msgstr "%s: nevaljana indirektna ekspanzija" -#: subst.c:6771 subst.c:6910 -#, fuzzy, c-format +#: subst.c:6807 +#, c-format msgid "%s: invalid variable name" -msgstr "„%s”: neispravno drugo ime" - -#: subst.c:6962 -#, fuzzy, c-format -msgid "%s: parameter not set" -msgstr "%s: parametar prazan ili nije postavljen" +msgstr "„%s“: nevaljano ime varijable" -#: subst.c:6964 +#: subst.c:6854 #, 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:7201 subst.c:7216 +#: subst.c:7089 subst.c:7104 #, c-format msgid "%s: substring expression < 0" -msgstr "%s: izraz podniza < 0" +msgstr "%s: rezultat od izraza dijela stringa < 0" -#: subst.c:8839 subst.c:8860 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: neispravna zamjena" - -#: subst.c:8948 +#: subst.c:8450 #, 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:9346 -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" +#: subst.c:8802 +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 supstituciju" -#: subst.c:9903 +#: subst.c:9349 #, 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:10907 +#: subst.c:10298 #, 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:748 test.c:751 +#: test.c:282 test.c:744 test.c:747 #, 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:791 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" -msgstr "%s: očekujem binarni operator" +msgstr "%s: očekuje se binarni operator" -#: test.c:873 +#: test.c:869 msgid "missing `]'" -msgstr "nedostaje „]”" +msgstr "nedostaje „]“" -#: trap.c:216 +#: trap.c:224 msgid "invalid signal number" -msgstr "neispravan broj signala" +msgstr "nevaljani broj za signal" -#: trap.c:379 +#: trap.c:387 #, 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:383 +#: trap.c:391 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "" +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:439 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" -msgstr "trap_handler: neispravan signal %d" +msgstr "trap_handler(): loši signal %d" -#: variables.c:399 +#: variables.c:409 #, 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:801 +#: variables.c:814 #, 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:2512 +#: variables.c:2413 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:2531 -#, fuzzy, c-format +#: variables.c:2432 +#, 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:3246 +#: variables.c:3043 #, c-format msgid "%s: assigning integer to name reference" -msgstr "" +msgstr "%s: nazivu referencije se pripisuje cijeli broj" -#: variables.c:4149 +#: variables.c:3940 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:4437 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" -msgstr "%s ima prazan exportstr" +msgstr "*** %s ima prazni exportstr" -#: variables.c:4442 variables.c:4451 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" -msgstr "" +msgstr "*** nevaljani znak %d u exportstr za %s" -#: variables.c:4457 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" -msgstr "" +msgstr "*** nema „=“ u exportstr za %s" -#: variables.c:4911 +#: variables.c:4684 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:4924 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" -msgstr "" +msgstr "pop_var_context(): nije „global_variables“ kontekst" -#: variables.c:4999 +#: variables.c:4772 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:5862 +#: variables.c:5619 #, 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:5867 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" -msgstr "" +msgstr "%s: %s: nevaljana vrijednost za praćenje deskriptora datoteke" -#: variables.c:5912 -#, fuzzy, c-format +#: variables.c:5669 +#, 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." +msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" msgstr "" -"Licenca GPLv3+: GNU GPL inačica 3 ili novija \n" +"Licencija:\n" +"GPLv3+: GNU GPL inačica 3 ili novija \n" #: version.c:86 version2.c:86 #, c-format @@ -2110,68 +2113,67 @@ 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:93 +#: xmalloc.c:91 #, 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:95 +#: xmalloc.c:93 #, 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:165 +#: xmalloc.c:163 #, 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:167 +#: xmalloc.c:165 #, 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]" +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]" @@ -2179,238 +2181,237 @@ 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 "" +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...]" +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]" +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 ...]" +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 [-fn] [id ...]" -msgstr "" +msgid "wait [-n] [id ...]" +msgstr "wait [-n] [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" +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]" @@ -2418,44 +2419,45 @@ 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] [-" -"W wordlist] [-F function] [-C command] [-X filterpat] [-P prefix] [-S " -"suffix] [name ...]" +msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-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 OPCIJA] [-A AKCIJA]\n" +" [-C NAREDBA] [-F FUNCIJA] [-G 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]" +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 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 "" +msgstr "compopt [-o|+o OPCIJA] [-DE] [IME...]" #: builtins.c:242 -msgid "" -"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" +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 [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" +msgid "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" msgstr "" +"readarray [-n BROJ] [-O POČETAK] [-s BROJ] [-t] [-u FD]\n" +" [-C FUNKCIJA] [-c TOLIKO] [POLJE]" #: builtins.c:256 msgid "" @@ -2472,10 +2474,18 @@ msgid "" " -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" +" alias returns true unless a NAME is supplied for which no alias has 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 "" @@ -2486,6 +2496,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 "" @@ -2499,35 +2514,66 @@ msgid "" " 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" +" 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" +" -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" +" -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" +" -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 "" +"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 "" @@ -2539,6 +2585,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 "" @@ -2550,6 +2601,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 "" @@ -2557,13 +2612,22 @@ msgid "" " \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" +" 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 "" +"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 "" @@ -2580,27 +2644,32 @@ 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 "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\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" +" 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" +" 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" @@ -2616,15 +2685,49 @@ msgid "" " \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" +" `..' 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" +" Returns 0 if the directory is changed, and if $PWD is set successfully 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 "" @@ -2641,6 +2744,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 "" @@ -2650,13 +2763,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 "" @@ -2664,11 +2771,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 "" @@ -2676,19 +2779,14 @@ 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 "" "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" +" 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" @@ -2700,6 +2798,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 "" @@ -2720,11 +2832,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 the value of each NAME to lower case on assignment\n" +" -l\tto convert NAMEs 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" +" -u\tto convert NAMEs to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2732,25 +2844,57 @@ msgid "" " 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" +" 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 "" +"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 pridruživanja 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 "" @@ -2766,13 +2910,22 @@ 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 msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by " -"a\n" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -2800,6 +2953,35 @@ msgid "" " 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 msgid "" @@ -2813,6 +2995,12 @@ 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 msgid "" @@ -2840,18 +3028,48 @@ 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 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\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 "" +"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 msgid "" @@ -2893,14 +3111,47 @@ 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 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" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -2908,14 +3159,28 @@ msgid "" " -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" +" 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." +" 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 msgid "" @@ -2924,37 +3189,32 @@ msgid "" " 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 msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not 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 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" +" 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" +" -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" @@ -2968,9 +3228,27 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" 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 msgid "" @@ -2983,28 +3261,41 @@ 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 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" +" 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 "" +"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 upravljanje s poslovima nije omogućeno\n" +" ili se dogodila greška." #: builtins.c:787 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" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3021,6 +3312,23 @@ 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 msgid "" @@ -3037,12 +3345,25 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifying a help topic\n" +" PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" 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" +" Opties:\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 msgid "" @@ -3053,8 +3374,7 @@ 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. Negative\n" -" \t\toffsets count back from the end of the history list\n" +" -d offset\tdelete the history entry at position 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" @@ -3072,14 +3392,44 @@ msgid "" " \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" +" 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 "" +"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:873 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3102,8 +3452,26 @@ 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:900 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3119,8 +3487,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:919 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3142,16 +3524,36 @@ 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:943 +#: builtins.c:942 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" +" 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" @@ -3187,35 +3589,71 @@ 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:988 +#: builtins.c:987 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" +" 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" +" 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" +" 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" +" -e\tuse Readline to obtain the line in an interactive shell\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" +" -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" @@ -3233,14 +3671,48 @@ msgid "" " -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" +" 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 "" +"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 u interaktivnoj ljusci rabi „readline“ za čitanje retka\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:1035 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3251,8 +3723,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:1048 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3295,8 +3775,7 @@ msgid "" " 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" +" 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" @@ -3320,8 +3799,7 @@ msgid "" " 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" +" -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" @@ -3337,8 +3815,84 @@ 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 upravljanje s 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:1133 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -3350,8 +3904,7 @@ msgid "" " -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" +" 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" @@ -3359,14 +3912,29 @@ 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:1155 +#: builtins.c:1154 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" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -3378,8 +3946,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:1174 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -3399,8 +3982,25 @@ 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:1196 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -3410,8 +4010,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:1208 builtins.c:1223 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -3424,8 +4030,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:1239 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -3438,8 +4053,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 upravljanje poslom nije omogućeno\n" +" ili se dogodila greška." -#: builtins.c:1255 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -3473,8 +4098,7 @@ msgid "" " -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 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" @@ -3495,8 +4119,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -3521,33 +4144,105 @@ 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:1337 +#: builtins.c:1336 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:1346 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\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 "" +"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:1358 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\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" @@ -3556,37 +4251,60 @@ msgid "" " 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" +" 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" +" 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 or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in 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." +" 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 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:1394 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -3612,16 +4330,35 @@ msgid "" " 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." +" 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:1425 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\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" @@ -3664,8 +4401,52 @@ 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:1475 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -3682,45 +4463,74 @@ 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:1495 +#: builtins.c:1494 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" +" 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" +" status is zero. If ID is a 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" +" Završi s kȏdom zadnjeg ID-a, s kȏdom 1 ako je ID nevaljani\n" +" ili je dȃna nevaljana opcija." -#: builtins.c:1519 +#: builtins.c:1515 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" +" 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" +" Returns the status of the last PID; fails if PID is invalid or an 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:1534 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -3732,8 +4542,16 @@ 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:1548 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -3749,8 +4567,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:1566 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -3769,8 +4597,23 @@ 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:1587 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -3785,8 +4628,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:1604 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -3796,29 +4650,39 @@ 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:1616 +#: builtins.c:1612 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" +" 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" +" `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 "" +"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:1633 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -3828,8 +4692,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:1645 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -3839,8 +4709,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:1657 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -3852,22 +4728,37 @@ 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:1671 +#: builtins.c:1667 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" +" 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 "" +"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:1685 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -3877,8 +4768,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:1697 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -3891,8 +4788,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:1712 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -3902,17 +4807,21 @@ 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:1724 +#: builtins.c:1720 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" +" 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" @@ -3930,8 +4839,29 @@ 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:1750 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -3984,8 +4914,54 @@ 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:1807 +"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:1803 msgid "" "Add directories to stack.\n" " \n" @@ -4015,8 +4991,30 @@ 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:1841 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -4042,9 +5040,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:1871 -#, fuzzy +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -4072,34 +5090,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:1902 +#: builtins.c:1898 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" +" arguments, list all shell options with an indication of whether or not each\n" +" is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -4112,8 +5131,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:1923 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -4121,45 +5157,64 @@ msgid "" " -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" +" 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" +" 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" +" 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" +" %(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" +" 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" +" Returns success unless an invalid option is given or a write or 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:1957 +#: builtins.c:1953 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" +" 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" @@ -4178,30 +5233,55 @@ msgid "" " 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" +"\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" +"\n" +" Završi s kȏdom 0 osim ako je dȃna nevaljana opcija\n" +" ili se dogodila greška." -#: builtins.c:1985 +#: builtins.c:1981 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" +" 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 "" +"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:2000 +#: builtins.c:1996 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" +" 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" @@ -4222,27 +5302,44 @@ 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" +"\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:2030 +#: builtins.c:2026 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" +" 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" +" -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" +" -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" @@ -4255,35 +5352,56 @@ msgid "" " 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" +" 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" +" Returns success unless an invalid option is given or ARRAY is readonly 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:2066 +#: builtins.c:2062 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”." +"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" -#~ msgid "" -#~ "License GPLv2+: GNU GPL version 2 or later \n" -#~ msgstr "" -#~ "Licenca GPLv2+: GNU GPL inačica 2 ili novija \n" +#~ msgid "License GPLv2+: GNU GPL version 2 or later \n" +#~ msgstr "Licenca GPLv2+: GNU GPL inačica 2 ili novija \n" #~ msgid ":" #~ msgstr ":" diff --git a/po/pt.po b/po/pt.po index 2f99d1489..2678c9b76 100644 --- a/po/pt.po +++ b/po/pt.po @@ -7,133 +7,131 @@ msgid "" msgstr "" "Project-Id-Version: bash-4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" "PO-Revision-Date: 2018-01-30 06:34+0000\n" "Last-Translator: Pedro Albuquerque \n" "Language-Team: Portuguese \n" +"Language: pt\n" +"X-Bugs: Report translation errors to the Language-Team address.\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.6\n" -#: arrayfunc.c:58 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "subscrito de matriz inválido" -#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 -#: variables.c:2922 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: a remover atributo nameref" -#: arrayfunc.c:398 builtins/declare.def:831 +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: impossível converter matriz indexada para associativa" -#: arrayfunc.c:582 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: chave de matriz associativa inválida" -#: arrayfunc.c:584 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: impossível atribuir a índice não numérico" -#: arrayfunc.c:629 +#: arrayfunc.c:625 #, 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:436 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: impossível criar: %s" -#: bashline.c:4111 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "" -"bash_execute_unix_command: impossível encontrar mapa de teclado para o " -"comando" +msgstr "bash_execute_unix_command: impossível encontrar mapa de teclado para o comando" -#: bashline.c:4221 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: o 1º carácter não-espaço não é \"\"\"" -#: bashline.c:4250 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "sem \"%c\" de fecho em %s" -#: bashline.c:4284 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: separador dois pontos em falta" -#: braces.c:331 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "expansão: impossível alocar memória para %s" -#: braces.c:429 -#, fuzzy, c-format -msgid "brace expansion: failed to allocate memory for %u elements" +#: braces.c:427 +#, c-format +msgid "brace expansion: failed to allocate memory for %d elements" msgstr "expansão: falha ao alocar memória para %d elementos" -#: braces.c:473 +#: braces.c:471 #, 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 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "\"%s\": aliás inválido" -#: builtins/bind.def:122 builtins/bind.def:125 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "Edição de linha não activada" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "\"%s\": mapa de teclado inválido" -#: builtins/bind.def:252 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: impossível ler: %s" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:270 +#, c-format +msgid "`%s': cannot unbind" +msgstr "\"%s\": impossível desassociar" + +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "\"%s\": nome de função desconhecido" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, 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 +#: builtins/bind.def:320 #, 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 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "total de ciclos" -#: builtins/break.def:139 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "só tem significado num ciclo \"for\", \"while\" ou \"until\"" @@ -147,162 +145,162 @@ msgstr "" " \n" " Sem EXPR, devolve " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME não definida" -#: builtins/cd.def:327 builtins/common.c:161 test.c:889 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "demasiados argumentos" -#: builtins/cd.def:334 +#: builtins/cd.def:336 msgid "null directory" msgstr "pasta nula" -#: builtins/cd.def:345 +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD não definida" -#: builtins/common.c:96 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "linha %d: " -#: builtins/common.c:134 error.c:264 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "aviso: " -#: builtins/common.c:148 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:193 shell.c:510 shell.c:838 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: a opção requer um argumento" -#: builtins/common.c:200 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: requer um argumento numérico" -#: builtins/common.c:207 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: não encontrado" -#: builtins/common.c:216 shell.c:851 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: opção inválida" -#: builtins/common.c:223 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: nome de opção inválido" -#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "\"%s\": identificador inválido" -#: builtins/common.c:240 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "número octal inválido" -#: builtins/common.c:242 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "número hexadecimal inválido" -#: builtins/common.c:244 expr.c:1538 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "número inválido" -#: builtins/common.c:252 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: especificação de sinal inválida" -#: builtins/common.c:259 +#: builtins/common.c:265 #, 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 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: variável só de leitura" -#: builtins/common.c:274 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fora do intervalo" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argumento" -#: builtins/common.c:276 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s fora do intervalo" -#: builtins/common.c:284 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: tarefa inexistente" -#: builtins/common.c:292 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: sem controlo da tarefa" -#: builtins/common.c:294 +#: builtins/common.c:300 msgid "no job control" msgstr "sem controlo da tarefa" -#: builtins/common.c:304 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: restrita" -#: builtins/common.c:306 +#: builtins/common.c:312 msgid "restricted" msgstr "restrita" -#: builtins/common.c:314 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: não é interno da consola" -#: builtins/common.c:323 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "erro de escrita: %s" -#: builtins/common.c:331 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "erro ao definir atributos do terminal: %s" -#: builtins/common.c:333 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "erro ao obter atributos do terminal: %s" -#: builtins/common.c:579 +#: builtins/common.c:585 #, 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 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificação de tarefa ambígua" -#: builtins/common.c:908 +#: builtins/common.c:918 msgid "help not available in this version" msgstr "ajuda indisponível nesta versão" @@ -311,69 +309,69 @@ msgstr "ajuda indisponível nesta versão" msgid "%s: invalid action name" msgstr "%s: nome de acção inválido" -#: builtins/complete.def:452 builtins/complete.def:653 -#: builtins/complete.def:874 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: sem especificação de conclusão" -#: builtins/complete.def:707 +#: builtins/complete.def:699 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:709 +#: builtins/complete.def:701 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:847 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "a função de conclusão não está em execução" -#: builtins/declare.def:132 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "só pode ser usado numa função" -#: builtins/declare.def:369 builtins/declare.def:736 +#: builtins/declare.def:332 builtins/declare.def:685 #, 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:3161 +#: builtins/declare.def:343 variables.c:2959 #, 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:2018 variables.c:3083 variables.c:3095 -#: variables.c:3158 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 #, c-format msgid "%s: circular name reference" msgstr "%s: referência circular de nome" -#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 #, 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:500 +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "impossível usar \"-f\" para fazer funções" -#: builtins/declare.def:512 execute_cmd.c:5797 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: função só de leitura" -#: builtins/declare.def:804 +#: builtins/declare.def:753 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: atribuição de matriz composta citada obsoleta" -#: builtins/declare.def:818 +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: impossível destruir variáveis de matriz assim" -#: builtins/declare.def:825 builtins/read.def:784 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: impossível converter matriz associativa em indexada" @@ -407,68 +405,68 @@ msgstr "%s: não carregada dinamicamente" msgid "%s: cannot delete: %s" msgstr "%s: impossível eliminar: %s" -#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: é uma pasta" -#: builtins/evalfile.c:144 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: não é um ficheiro normal" -#: builtins/evalfile.c:153 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: ficheiro muito grande" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: impossível executar o binário" -#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: impossível executar: %s" -#: builtins/exit.def:64 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "logout\n" -#: builtins/exit.def:89 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "não é consola de sessão: use \"exit\"" -#: builtins/exit.def:121 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Há tarefas interrompidas.\n" -#: builtins/exit.def:123 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Há tarefas em curso.\n" -#: builtins/fc.def:265 +#: builtins/fc.def:269 msgid "no command found" msgstr "sem comando encontrado" -#: builtins/fc.def:323 builtins/fc.def:372 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "especificação de histórico" -#: builtins/fc.def:393 +#: builtins/fc.def:397 #, 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 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "actual" -#: builtins/fg_bg.def:161 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "tarefa %d começou sem controlo de tarefa" @@ -483,40 +481,38 @@ 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:91 +#: builtins/hash.def:92 msgid "hashing disabled" msgstr "hashing desactivado" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabela de hash vazia\n" -#: builtins/hash.def:266 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "sucessos\tcomando\n" -#: builtins/help.def:133 +#: builtins/help.def:135 +#, c-format 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 +#: builtins/help.def:187 #, 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\"." +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 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: impossível abrir: %s" -#: builtins/help.def:524 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -527,8 +523,7 @@ msgid "" "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" +"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" @@ -536,21 +531,20 @@ msgstr "" "Um asterisco (*) junto a um nome significa que o comando está inactivo.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 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 +#: builtins/history.def:187 msgid "history position" msgstr "posição do histórico" -#: builtins/history.def:331 +#: builtins/history.def:264 #, c-format msgid "%s: invalid timestamp" msgstr "%s: carimbo inválido" -#: builtins/history.def:442 +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: falha na expansão do histórico" @@ -564,16 +558,16 @@ msgstr "%s: falha inlib" msgid "no other options allowed with `-x'" msgstr "não são permitidas mais opções com \"-x\"" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, 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:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Erro desconhecido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "esperada expressão" @@ -582,69 +576,69 @@ msgstr "esperada expressão" msgid "%s: not an indexed array" msgstr "%s: não é uma matriz indexada" -#: builtins/mapfile.def:271 builtins/read.def:305 +#: builtins/mapfile.def:272 builtins/read.def:306 #, 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:312 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descritor de ficheiro inválido: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: total de linhas inválido" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: origem de matriz inválida" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: callback inválida" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "nome de variável de matriz vazio" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "requerido suporte a variáveis de matriz" -#: builtins/printf.def:416 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "%s: carácter de formato em falta" -#: builtins/printf.def:471 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "\"%c\": especificação de formato de hora inválida" -#: builtins/printf.def:673 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "\"%c\": carácter de formato inválido" -#: builtins/printf.def:699 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:785 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "problema de análise de formato: %s" -#: builtins/printf.def:882 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "dígito hex em falta para \\x" -#: builtins/printf.def:897 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "dígito unicode em falta para \\%c" @@ -658,19 +652,19 @@ msgstr "nenhuma outra pasta" msgid "%s: invalid argument" msgstr "%s: argumento inválido" -#: builtins/pushd.def:480 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:524 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "pilha de pastas vazia" -#: builtins/pushd.def:526 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "índice da pilha de pastas" -#: builtins/pushd.def:701 +#: builtins/pushd.def:696 msgid "" "Display the list of currently remembered directories. Directories\n" " find their way onto the list with the `pushd' command; you can get\n" @@ -685,12 +679,10 @@ msgid "" " \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" +" +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" +" -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" @@ -712,7 +704,7 @@ msgstr "" " -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 +#: builtins/pushd.def:718 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 +750,7 @@ msgstr "" " \n" " O \"dirs\" interno mostra a pilha de pastas." -#: builtins/pushd.def:748 +#: builtins/pushd.def:743 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" @@ -796,45 +788,45 @@ msgstr "" " \n" " O \"dirs\" interno mostra a pilha de pastas." -#: builtins/read.def:277 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: especificação de inacção inválida" -#: builtins/read.def:729 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "erro de leitura: %d: %s" -#: builtins/return.def:68 +#: builtins/return.def:71 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:834 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "impossível desactivar simultaneamente uma função e uma variável" -#: builtins/set.def:881 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: impossível desactivar" -#: builtins/set.def:902 variables.c:3597 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: impossível desactivar: %s só de leitura" -#: builtins/set.def:915 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: não é variável de matriz" -#: builtins/setattr.def:189 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: não é função" -#: builtins/setattr.def:194 +#: builtins/setattr.def:196 #, c-format msgid "%s: cannot export" msgstr "%s: impossível exportar" @@ -843,20 +835,20 @@ msgstr "%s: impossível exportar" msgid "shift count" msgstr "total de trocas" -#: builtins/shopt.def:301 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "impossível definir e desactivar opções da consola em simultâneo" -#: builtins/shopt.def:403 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome de opção da consola inválido" -#: builtins/source.def:128 +#: builtins/source.def:131 msgid "filename argument required" msgstr "requerido argumento de nome de ficheiro" -#: builtins/source.def:154 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: ficheiro não encontrado" @@ -869,61 +861,61 @@ msgstr "impossível suspender" msgid "cannot suspend a login shell" msgstr "impossível suspender uma consola de sessão" -#: builtins/type.def:235 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s usa o aliás \"%s\"\n" -#: builtins/type.def:256 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s é palavra-chave da consola\n" -#: builtins/type.def:275 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s é uma função\n" -#: builtins/type.def:299 +#: builtins/type.def:300 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s é opção interna especial da consola\n" -#: builtins/type.def:301 +#: builtins/type.def:302 #, 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 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s é %s\n" -#: builtins/type.def:343 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s tem hash (%s)\n" -#: builtins/ulimit.def:396 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argumento de limite inválido" -#: builtins/ulimit.def:422 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "\"%c\": comando errado" -#: builtins/ulimit.def:451 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: impossível obter limite: %s" -#: builtins/ulimit.def:477 +#: builtins/ulimit.def:479 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:489 builtins/ulimit.def:789 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: impossível modificar limite: %s" @@ -942,208 +934,202 @@ 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:89 error.c:347 error.c:349 error.c:351 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " linha " -#: error.c:164 +#: error.c:165 #, c-format msgid "last command: %s\n" msgstr "último comando: %s\n" -#: error.c:172 +#: error.c:173 #, c-format msgid "Aborting..." msgstr "A abortar..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:287 +#: error.c:288 #, c-format msgid "INFORM: " msgstr "INFORM.: " -#: error.c:462 +#: error.c:463 msgid "unknown command error" msgstr "erro de comando desconhecido" -#: error.c:463 +#: error.c:464 msgid "bad command type" msgstr "tipo de comando errado" -#: error.c:464 +#: error.c:465 msgid "bad connector" msgstr "conector errado" -#: error.c:465 +#: error.c:466 msgid "bad jump" msgstr "salto errado" -#: error.c:503 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: variável desassociada" -#: eval.c:242 +#: eval.c:209 #, 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 +#: execute_cmd.c:527 #, 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:1294 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "FORMATOHORA: \"%c\": carácter de formato inválido" -#: execute_cmd.c:2330 +#: execute_cmd.c:2273 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] ainda existe" -#: execute_cmd.c:2456 +#: execute_cmd.c:2377 msgid "pipe error" msgstr "erro de pipe" -#: execute_cmd.c:4624 +#: execute_cmd.c:4496 #, 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:4636 +#: execute_cmd.c:4508 #, 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:4742 +#: execute_cmd.c:4616 #, 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:5285 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: restrito: impossível especificar \"/\" em nomes de comando" -#: execute_cmd.c:5383 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: comando não encontrado" -#: execute_cmd.c:5627 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5665 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interpretador errado" -#: execute_cmd.c:5702 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: impossível executar binário: %s" -#: execute_cmd.c:5788 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "%s: é uma opção interna especial" -#: execute_cmd.c:5840 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossível duplicar fd %d para fd %d" -#: expr.c:263 +#: expr.c:259 msgid "expression recursion level exceeded" msgstr "nível de recursão da expressão excedido" -#: expr.c:291 +#: expr.c:283 msgid "recursion stack underflow" msgstr "sub-fluxo da pilha de recursividade" -#: expr.c:453 +#: expr.c:431 msgid "syntax error in expression" msgstr "erro de sintaxe na expressão" -#: expr.c:497 +#: expr.c:475 msgid "attempted assignment to non-variable" msgstr "tentativa de atribuição a não-variável" -#: expr.c:506 -#, fuzzy -msgid "syntax error in variable assignment" -msgstr "erro de sintaxe na expressão" - -#: expr.c:520 expr.c:886 +#: expr.c:495 expr.c:858 msgid "division by 0" msgstr "divisão por 0" -#: expr.c:567 +#: expr.c:542 msgid "bug: bad expassign token" msgstr "problema: símbolo expassign errado" -#: expr.c:621 +#: expr.c:595 msgid "`:' expected for conditional expression" msgstr "\":\" esperados para expressão condicional" -#: expr.c:947 +#: expr.c:919 msgid "exponent less than 0" msgstr "expoente menor que 0" -#: expr.c:1004 +#: expr.c:976 msgid "identifier expected after pre-increment or pre-decrement" msgstr "identificador esperado após pré-incremento ou pré-decremento" -#: expr.c:1030 +#: expr.c:1002 msgid "missing `)'" msgstr "\")\" em falta" -#: expr.c:1081 expr.c:1458 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "erro de sintaxe: operando esperado" -#: expr.c:1460 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "erro de sintaxe: operador aritmético inválido" -#: expr.c:1484 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (símbolo de erro é \"%s\")" -#: expr.c:1542 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "base aritmética inválida" -#: expr.c:1562 +#: expr.c:1497 msgid "value too great for base" msgstr "valor muito grande para a base" -#: expr.c:1611 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: erro de expressão\n" -#: general.c:69 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: impossível aceder a pastas-mãe" -#: input.c:99 subst.c:5858 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "impossível repor modo nodelay para fd %d" -#: input.c:266 +#: input.c:271 #, 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" +msgstr "impossível alocar novo descritor de ficheiro para entrada bash de fd %d" -#: input.c:274 +#: input.c:279 #, 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" @@ -1152,158 +1138,153 @@ msgstr "save_bash_input: buffer já existe para o novo fd %d" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pipe pgrp" -#: jobs.c:1080 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "pid %d aparece em tarefa em execução %d" -#: jobs.c:1199 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "a eliminar tarefa interrompida %d com grupo de processo %ld" -#: jobs.c:1303 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: processo %5ld (%s) na _pipeline" -#: jobs.c:1306 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marcado como ainda activo" -#: jobs.c:1635 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: pid não existente" -#: jobs.c:1650 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Sinal %d" -#: jobs.c:1664 jobs.c:1690 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Feito" -#: jobs.c:1669 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Interrompido" -#: jobs.c:1673 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Interrompido(%s)" -#: jobs.c:1677 +#: jobs.c:1632 msgid "Running" msgstr "Em execução" -#: jobs.c:1694 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Feito(%d)" -#: jobs.c:1696 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Sair de %d" -#: jobs.c:1699 +#: jobs.c:1654 msgid "Unknown status" msgstr "Estado desconhecido" -#: jobs.c:1786 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(núcleo despejado) " -#: jobs.c:1805 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2033 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "setpgid filho (%ld para %ld)" -#: jobs.c:2395 nojobs.c:657 +#: jobs.c:2347 nojobs.c:654 #, 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:2687 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: sem registo do processo %ld" -#: jobs.c:3048 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_tarefa: tarefa %d está interrompida" -#: jobs.c:3355 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: tarefa terminada" -#: jobs.c:3364 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: tarefa %d já em 2º plano" -#: jobs.c:3590 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: a ligar WNOHANG para evitar bloquieo indefinido" -#: jobs.c:4114 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: linha %d: " -#: jobs.c:4128 nojobs.c:900 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (núcleo despejado)" -#: jobs.c:4140 jobs.c:4153 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd agora: %s)\n" -#: jobs.c:4185 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_tarefa_control: getpgrp falhou" -#: jobs.c:4241 -#, fuzzy -msgid "initialize_job_control: no job control in background" -msgstr "initialize_tarefa_control: disciplina de linha" - -#: jobs.c:4257 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_tarefa_control: disciplina de linha" -#: jobs.c:4267 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_tarefa_control: setpgid" -#: jobs.c:4288 jobs.c:4297 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossível definir grupo de processo do terminal (%d)" -#: jobs.c:4302 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "não há controlo de tarefa nesta consola" -#: lib/malloc/malloc.c:306 +#: lib/malloc/malloc.c:296 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: asserção falhada: %s\n" -#: lib/malloc/malloc.c:322 +#: lib/malloc/malloc.c:312 #, c-format msgid "" "\r\n" @@ -1312,39 +1293,39 @@ msgstr "" "\r\n" "malloc: %s:%d: asserção frustrada\r\n" -#: lib/malloc/malloc.c:323 +#: lib/malloc/malloc.c:313 msgid "unknown" msgstr "desconhecido" -#: lib/malloc/malloc.c:811 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: bloqueio na lista livre clobbered" -#: lib/malloc/malloc.c:888 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: chamado com argumento de bloco já liberto" -#: lib/malloc/malloc.c:891 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: chamado com argumento de bloco não alocado" -#: lib/malloc/malloc.c:910 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: sub-fluxo detectado; mh_nbytes fora do intervalo" -#: lib/malloc/malloc.c:916 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: tamanho dos pontos inicial e final difere" -#: lib/malloc/malloc.c:1015 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: chamado com argumento de bloco não alocado" -#: lib/malloc/malloc.c:1030 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: sub-fluxo detectado; mh_nbytes fora do intervalo" -#: lib/malloc/malloc.c:1036 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: tamanho dos pontos inicial e final difere" @@ -1386,22 +1367,22 @@ msgstr "%s: especificação de caminho de rede errada" msgid "network operations not supported" msgstr "operações de rede não suportadas" -#: locale.c:205 +#: locale.c:200 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: não pode alterar o idioma (%s)" -#: locale.c:207 +#: locale.c:202 #, 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 +#: locale.c:259 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: não pode alterar o idioma (%s)" -#: locale.c:274 +#: locale.c:261 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: não pode alterar o idioma (%s): %s" @@ -1419,151 +1400,145 @@ msgstr "Tem novo correio em $_" msgid "The mail in %s has been read\n" msgstr "O correio em %s já foi lido\n" -#: make_cmd.c:317 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "erro de sintaxe: requerida expressão aritmética" -#: make_cmd.c:319 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "erro de sintaxe: \";\" inesperado" -#: make_cmd.c:320 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "erro de sintaxe: \"((%s))\"" -#: make_cmd.c:572 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo de instrução %d errado" -#: make_cmd.c:657 +#: make_cmd.c:669 #, 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\")" +msgstr "here-document na linha %d delimitado por fim-de-ficheiro (desejado \"%s\")" -#: make_cmd.c:756 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "" -"make_redirection: instrução de redireccionamento \"%d\" fora do intervalo" +msgstr "make_redirection: instrução de redireccionamento \"%d\" fora do intervalo" -#: parse.y:2369 +#: parse.y:2324 #, 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" +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:2772 +#: parse.y:2700 msgid "maximum here-document count exceeded" msgstr "total here-document máximo excedido" -#: parse.y:3511 parse.y:3881 +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "EOF inesperado ao procurar \"%c\" correspondentes" -#: parse.y:4581 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "EOF inesperado ao procurar \"]]\"" -#: parse.y:4586 +#: parse.y:4415 #, 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:4590 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "erro de sintaxe em expressão condicional" -#: parse.y:4668 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "símbolo inesperado \"%s\", esperado \")\"" -#: parse.y:4672 +#: parse.y:4501 msgid "expected `)'" msgstr "esperado \")\"" -#: parse.y:4700 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento \"%s\" inesperado para operador unário condicional" -#: parse.y:4704 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para operador unário condicional" -#: parse.y:4750 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "símbolo \"%s\" inesperado, esperado operador binário condicional" -#: parse.y:4754 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "esperado operador binário condicional" -#: parse.y:4776 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento \"%s\" inesperado para operador binário condicional" -#: parse.y:4780 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para operador binário condicional" -#: parse.y:4791 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "símbolo \"%c\" inesperado em comando condicional" -#: parse.y:4794 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "símbolo \"%s\" inesperado em comando condicional" -#: parse.y:4798 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "símbolo %d inesperado em comando condicional" -#: parse.y:6220 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "erro de sintaxe junto a símbolo \"%s\" inesperado" -#: parse.y:6238 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "erro de sintaxe junto a \"%s\"" -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "erro de sintaxe: fim de ficheiro inesperado" -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:6310 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use \"%s\" para sair da consola.\n" -#: parse.y:6472 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "EOF inesperado ao procurar o \")\" correspondente" -#: pcomplete.c:1132 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: função \"%s\" não encontrada" -#: pcomplete.c:1722 +#: pcomplete.c:1646 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "programmable_completion: %s: possível ciclo de repetição" @@ -1573,113 +1548,109 @@ msgstr "programmable_completion: %s: possível ciclo de repetição" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: conector \"%d\" errado" -#: print_cmd.c:373 +#: 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:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: ponteiro de ficheiro NULL" -#: print_cmd.c:382 +#: 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:1538 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: \"%c\": carácter de formato inválido" -#: redir.c:121 redir.c:167 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "descritor de ficheiro fora de alcance" -#: redir.c:174 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redireccionamento ambíguo" -#: redir.c:178 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: impossível sobrescrever ficheiro existente" -#: redir.c:183 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restricto: impossível redireccionar saída" -#: redir.c:188 +#: redir.c:192 #, 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 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: impossível atribuir fd a variável" -#: redir.c:588 +#: redir.c:586 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:870 redir.c:985 redir.c:1046 redir.c:1211 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "erro de redireccionamento: impossível duplicar fd" -#: shell.c:343 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "impossível encontrar /tmp, por favor crie-a!" -#: shell.c:347 +#: shell.c:351 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 "" - -#: shell.c:940 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opção inválida" -#: shell.c:1299 +#: shell.c:1282 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "impossível definir uid como %d: uid efectiva %d" -#: shell.c:1306 +#: shell.c:1289 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "impossível definir gid como %d: gid efectiva %d" -#: shell.c:1494 +#: shell.c:1458 msgid "cannot start debugger; debugging mode disabled" msgstr "impossível iniciar o depurador; modo de depuração desactivado" -#: shell.c:1608 +#: shell.c:1566 #, c-format msgid "%s: Is a directory" msgstr "%s: é uma pasta" -#: shell.c:1826 +#: shell.c:1777 msgid "I have no name!" msgstr "Não tenho nome!" -#: shell.c:1980 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versão %s-(%s)\n" -#: shell.c:1981 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1688,52 +1659,49 @@ 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 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Opções longas GNU:\n" -#: shell.c:1987 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Opções da consola:\n" -#: shell.c:1988 +#: shell.c:1938 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:2003 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\topção -%s ou -o\n" -#: shell.c:2009 +#: shell.c:1959 #, 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" +msgstr "Insira \"%s -c \"help set\"\" para mais informação sobre opções da consola.\n" -#: shell.c:2010 +#: shell.c:1960 #, 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" +msgstr "Insira \"%s -c help\" para mais informação sobre comandos internos da consola.\n" -#: shell.c:2011 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Use o comando \"bashbug\" para reportar erros.\n" -#: shell.c:2013 +#: shell.c:1963 #, c-format msgid "bash home page: \n" msgstr "Página inicial do bash: \n" -#: shell.c:2014 +#: shell.c:1964 #, c-format msgid "General help using GNU software: \n" msgstr "Ajuda geral para usar programas GNU: \n" -#: sig.c:695 +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operação inválida" @@ -1907,21 +1875,21 @@ msgstr "Sinal desconhecido #" msgid "Unknown Signal #%d" msgstr "Sinal desconhecido #%d" -#: subst.c:1450 subst.c:1641 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "má substituição: sem \"%s\" de fecho em %s" -#: subst.c:3209 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: impossível atribuir lista a membro de matriz" -#: subst.c:5734 subst.c:5750 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "impossível fazer pipe para substituição de processo" -#: subst.c:5796 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "impossível fazer filho para substituição de processo" @@ -1940,76 +1908,67 @@ msgstr "impossível abrir pipe chamado %s para escrita" msgid "cannot duplicate named pipe %s as fd %d" msgstr "imossível duplicar pipe chamado %s como fd %d" -#: subst.c:5990 +#: subst.c:5959 msgid "command substitution: ignored null byte in input" msgstr "substituição de comando: byte nulo ignorado na entrada" -#: subst.c:6121 +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "impossível fazer pipe para substituição de comando" -#: subst.c:6164 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "impossível fazer filho para substituição de comando" -#: subst.c:6190 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: impossível duplicar pipe como fd 1" -#: subst.c:6641 subst.c:9483 +#: subst.c:6580 subst.c:8939 #, 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:6737 subst.c:6755 subst.c:6903 +#: subst.c:6666 subst.c:8351 subst.c:8371 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: má substituição" + +#: subst.c:6800 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: expansão indirecta inválida" -#: subst.c:6771 subst.c:6910 +#: subst.c:6807 #, c-format msgid "%s: invalid variable name" msgstr "%s: nome de variável inválido" -#: subst.c:6962 -#, fuzzy, c-format -msgid "%s: parameter not set" -msgstr "%s: parâmetro nulo ou não definido" - -#: subst.c:6964 +#: subst.c:6854 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parâmetro nulo ou não definido" -#: subst.c:7201 subst.c:7216 +#: subst.c:7089 subst.c:7104 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressão de sub-cadeia < 0" -#: subst.c:8839 subst.c:8860 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: má substituição" - -#: subst.c:8948 +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: impossível atribuir desta forma" -#: subst.c:9346 -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:8802 +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:9903 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "má substituição: sem \"\"\" de fecho em %s" -#: subst.c:10907 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "sem par:%s" @@ -2032,109 +1991,105 @@ msgstr "\")\" esperado" msgid "`)' expected, found %s" msgstr "\")\" esperado, encontrado %s" -#: test.c:282 test.c:748 test.c:751 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: operador unáro esperado" -#: test.c:469 test.c:791 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: operador bináro esperado" -#: test.c:873 +#: test.c:869 msgid "missing `]'" msgstr "\"]\" em falta" -#: trap.c:216 +#: trap.c:224 msgid "invalid signal number" msgstr "número de sinal inválido" -#: trap.c:379 +#: trap.c:387 #, 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:383 +#: trap.c:391 #, 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" +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:439 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinal errado %d" -#: variables.c:399 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "erro ao importar definição de função para \"%s\"" -#: variables.c:801 +#: variables.c:814 #, 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:2512 +#: variables.c:2413 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:2531 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: não pode atribuir um valor à variável" -#: variables.c:3246 +#: variables.c:3043 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: a atribuir inteiro à referência de nome" -#: variables.c:4149 +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: sem contexto de função no âmbito actual" -#: variables.c:4437 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s tem exportstr nulo" -#: variables.c:4442 variables.c:4451 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "carácter %d inválido em exportstr para %s" -#: variables.c:4457 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "sem \"=\" em exportstr para %s" -#: variables.c:4911 +#: variables.c:4684 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:4924 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: sem contexto de global_variables" -#: variables.c:4999 +#: variables.c:4772 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" +msgstr "pop_scope: cabeça de consola_variables não é âmbito de ambiente temporário" -#: variables.c:5862 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: impossível abrir como FICHEIRO" -#: variables.c:5867 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor inválido para descritor de ficheiro trace" -#: variables.c:5912 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: valor de compatibilidade fora do intervalo" @@ -2144,12 +2099,8 @@ msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" -"Licença GPLv3+: GNU GPL versão 3 ou posterior \n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "Licença GPLv3+: GNU GPL versão 3 ou posterior \n" #: version.c:86 version2.c:86 #, c-format @@ -2164,22 +2115,22 @@ msgstr "Este é um programa gratuito; pode alterá-lo e distribuí-lo à vontade 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 +#: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: impossível alocar %lu bytes (%lu bytes alocados)" -#: xmalloc.c:95 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: impossível alocar %lu bytes" -#: xmalloc.c:165 +#: xmalloc.c:163 #, 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 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: impossível alocar %lu bytes" @@ -2193,13 +2144,8 @@ 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]" +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]" @@ -2263,8 +2209,7 @@ msgstr "getopts optstring name [arg]" #: builtins.c:98 msgid "exec [-cl] [-a name] [command [arguments ...]] [redirection ...]" -msgstr "" -"exec [-cl] [-a nome] [comando [argumentos ...]] [redireccionamento ...]" +msgstr "exec [-cl] [-a nome] [comando [argumentos ...]] [redireccionamento ...]" #: builtins.c:100 msgid "exit [n]" @@ -2295,12 +2240,8 @@ 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...]" +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]" @@ -2311,24 +2252,16 @@ 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]" +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 ...]" +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]" @@ -2391,8 +2324,7 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [modo]" #: builtins.c:177 -#, fuzzy -msgid "wait [-fn] [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [-n] [id ...]" #: builtins.c:181 @@ -2420,12 +2352,8 @@ 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" +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" @@ -2484,43 +2412,24 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] formato [argumentos]" #: builtins.c:231 -msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-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 acção] [-G padrglob] [-W " -"listpal] [-F função] [-C comando] [-X padrfiltro] [-P prefixo] [-S sufixo] " -"[nome ...]" +msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-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 acção] [-G padrglob] [-W listpal] [-F função] [-C comando] [-X padrfiltro] [-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]" +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] [-DE] [name ...]" msgstr "compopt [-o|+o opção] [-DE] [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]" +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 -#, fuzzy -msgid "" -"readarray [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"readarray [-n total] [-O origem] [-s total] [-t] [-u fd] [-C callback] [-c " -"quantia] [matriz]" +msgid "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "readarray [-n total] [-O origem] [-s total] [-t] [-u fd] [-C callback] [-c quantia] [matriz]" #: builtins.c:256 msgid "" @@ -2537,8 +2446,7 @@ msgid "" " -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" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" "Definir ou mostrar aliás.\n" @@ -2554,8 +2462,7 @@ msgstr "" " -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" +" 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 @@ -2586,30 +2493,25 @@ msgid "" " 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" +" 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" +" -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" +" -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" +" -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" @@ -2618,53 +2520,36 @@ 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" +" 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" +" -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" +" -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" +" -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" +" -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" +" -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" +" -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" +" -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." +" bind devolve 0 a não ser que seja dada uma opção desconhecida ou ocorra um erro." #: builtins.c:330 msgid "" @@ -2678,8 +2563,7 @@ msgid "" 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" +" Sai de um ciclo FOR, WHILE ou UNTIL. Se N for especificado, quebrar N ciclos\n" " envolventes.\n" " \n" " Estado de saída:\n" @@ -2709,8 +2593,7 @@ msgid "" " \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" +" 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" @@ -2718,15 +2601,12 @@ msgid "" msgstr "" "Executa comandos internos da consola.\n" " \n" -" Executar SHELL-INTERNO com argumentos ARGs sem realizar procura do " -"comando.\n" +" Executar 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" +" 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" +" 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 @@ -2754,30 +2634,23 @@ msgstr "" " 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" +" 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" +" 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" +" 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" +" 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" @@ -2793,32 +2666,25 @@ msgid "" " \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" +" `..' 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" +" 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" +" 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" +" 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" +" 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" @@ -2830,19 +2696,15 @@ msgstr "" " -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" +" -@\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" +" 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" +" 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 @@ -2867,12 +2729,10 @@ msgstr "" " \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" +" 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" +" 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 @@ -2920,8 +2780,7 @@ 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" +" 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" @@ -2935,26 +2794,20 @@ msgid "" 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" +" 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" +" -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 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." +" Devolve o estado de saída de COMANDO ou falha se COMANDO não for encontrado." #: builtins.c:490 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2973,11 +2826,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 the value of each NAME to lower case on assignment\n" +" -l\tto convert NAMEs 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" +" -u\tto convert NAMEs to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2985,8 +2838,7 @@ msgid "" " 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" +" 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" @@ -3002,8 +2854,7 @@ msgstr "" " -f\trea cadeiair acção ou exibição a nomes e definições de função\n" " -F\trea cadeiair exibição só a nomes de função (mais nº de linha e\n" " \t\tficheiro fonte ao depurar)\n" -" -g\tcriar variáveis globais quando usadas numa função da shel; " -"senão\n" +" -g\tcriar variáveis globais quando usadas numa função da shel; senão\n" " \t\té ignorada\n" " -p\tmostrar atributos e valores de cada NOME\n" " \n" @@ -3023,13 +2874,11 @@ msgstr "" " 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" +" 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" +" 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 @@ -3061,21 +2910,18 @@ msgstr "" " 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" +" 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" +" 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 msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by " -"a\n" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3111,11 +2957,9 @@ msgstr "" " 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" +" -E\tsuprimir explicitamente interpretação de escapes com barra esquerda\n" " \n" -" \"echo\" interpreta os seguintes caracteres de escapes com barra " -"esquerda:\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" @@ -3191,8 +3035,7 @@ msgstr "" " \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" +" -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" @@ -3206,15 +3049,13 @@ msgstr "" " 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." +" Devolve sucesso a não ser que NOME não seja um interno da consola ou ocorra um erro." #: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\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" @@ -3222,8 +3063,7 @@ msgid "" msgstr "" "Executa argumentos como comando da consola.\n" " \n" -" Combina ARGs numa única cadeia, usa o resultado como entrada da " -"consola,\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" @@ -3271,8 +3111,7 @@ msgid "" msgstr "" "Analisa argumentos da opção.\n" " \n" -" Getopts é usado pelos procedimentos da consola para analisar parâmetros " -"posicionais\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" @@ -3293,8 +3132,7 @@ msgstr "" " 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" +" 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" @@ -3302,8 +3140,7 @@ msgstr "" " 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" +" 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" @@ -3315,8 +3152,7 @@ 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" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3324,20 +3160,16 @@ msgid "" " -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" +" 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." +" 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" +" 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" @@ -3345,13 +3177,11 @@ msgstr "" " -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" +" 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." +" Devolve sucesso a não ser que COMANDO não seja encontrado ou ocorra um erro de redireccionamento." #: builtins.c:709 msgid "" @@ -3369,29 +3199,25 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\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" +" 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:728 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" +" 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" +" -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" @@ -3405,21 +3231,17 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" 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" +" 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" +" -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" @@ -3429,13 +3251,11 @@ msgstr "" " 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" +" 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." +" Devolve sucesso ou estado do comando executado; não-zero se ocorrer um erro." #: builtins.c:758 msgid "" @@ -3461,10 +3281,8 @@ msgstr "" 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" +" 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" @@ -3472,23 +3290,19 @@ msgid "" 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" +" 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." +" Devolve sucesso a não ser que o controlo de tarefas esteja inactivo ou ocorra um erro." #: builtins.c:787 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" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3523,11 +3337,9 @@ msgstr "" " \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." +" Devolve sucesso a não ser que NOME não seja encontrado ou indique uma opção inválida." #: builtins.c:812 -#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3542,17 +3354,15 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifying a help topic\n" +" PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" 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" +" 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" @@ -3565,11 +3375,9 @@ msgstr "" " 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." +" Devolve sucesso a não ser que PADRÃO não seja encontrado ou indique uma opção inválida." #: builtins.c:836 -#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3578,8 +3386,7 @@ 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. Negative\n" -" \t\toffsets count back from the end of the history list\n" +" -d offset\tdelete the history entry at position 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" @@ -3597,8 +3404,7 @@ msgid "" " \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" +" 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." @@ -3606,43 +3412,34 @@ 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" +" 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" " \n" -" -a\tacrescentar linhas de histórico desta sessão ao ficheiro de " -"histórico\n" -" -n\tler todas as linhas de histórico ainda não lidas do ficheiro de " -"histórico\n" +" -a\tacrescentar linhas de histórico desta sessão ao ficheiro de histórico\n" +" -n\tler todas as linhas de histórico ainda não lidas do ficheiro de histórico\n" " \t\te acrescentá-las à lista de histórico\n" " -r\tler o ficheiro de histórico e acrescentar o conteúdo à lista de\n" " \t\thistórico\n" " -w\tescrever o histórico actual no ficheiro de histórico\n" " \n" -" -p\trealizar expansão do histórico em cada ARG e mostrar o " -"resultado\n" +" -p\trealizar expansão do histórico em cada ARG e mostrar o resultado\n" " \t\tsem gravar na lista de histórico\n" " -s\tacrescentar 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" +" 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 entrad de histórico mostrada. Senão não são imprimidos quaisquer " -"carimbos.\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 entrad 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." +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro." -#: builtins.c:873 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3678,18 +3475,15 @@ msgstr "" " -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" +" 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" +" 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:900 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3712,16 +3506,14 @@ msgstr "" " \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" +" -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." +" Devolve sucesso a não ser que uma opção inválida ou JOBSPEC seja indicada." -#: builtins.c:919 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3756,24 +3548,21 @@ msgstr "" " \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" +" 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." +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro." -#: builtins.c:943 +#: builtins.c:942 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" +" 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" @@ -3812,10 +3601,8 @@ 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" +" 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" @@ -3840,10 +3627,8 @@ msgstr "" " \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" +" 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" @@ -3854,35 +3639,30 @@ msgstr "" " Estado de saída:\n" " Se o último ARG for avaliado como 0, let devolve 1; senão let devolve 0." -#: builtins.c:988 -#, fuzzy +#: builtins.c:987 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" +" 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" +" 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" +" 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" +" -e\tuse Readline to obtain the line in an interactive shell\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" +" -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" @@ -3900,39 +3680,32 @@ msgid "" " -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" +" 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" +" de palavras e a primeira palavra é atribuída ao primeiro NOME, a segunda\n" " ao segundo NOME, e assim em diante, com quaisquer palavras que sobrem \n" -" atribuídas ao último NOME. Só caracteres encontrados em $IFS são " -"reconhecidos\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" +" -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 da\n" +" -d delim\tcontinua até que o primeiro carácter de DELIM seja lido, em vez da\n" " \t\tnova linha\n" " -e\tuse Readline para obter a linha numa consola interactiva\n" " -i texto\tuse TEXTO como texto inicial para Readline\n" " -n ncars\tvoltar após ler NCARS caracteres em vez de esperar\n" " \t\tpor nova linha, mas respeita um delimitador se estiver\n" " \t\tantes de NCARS caracteres\n" -" -N ncars\tvoltar após ler exactamente NCARS caracteres, a não ser " -"que\n" +" -N ncars\tvoltar 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 nova linha final antes de\n" @@ -3950,13 +3723,11 @@ msgstr "" " -u fd\tler 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" +" 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:1035 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3974,10 +3745,9 @@ msgstr "" " 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." +" Devolve N, ou falha se a consola não estiver a executar uma função ou script." -#: builtins.c:1048 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4020,8 +3790,7 @@ msgid "" " 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" +" 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" @@ -4045,8 +3814,7 @@ msgid "" " 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" +" -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" @@ -4070,12 +3838,10 @@ msgstr "" " 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" +" -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" +" -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" @@ -4092,8 +3858,7 @@ msgstr "" " 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" +" 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" @@ -4104,16 +3869,11 @@ msgstr "" " 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" +" 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" @@ -4122,28 +3882,24 @@ msgstr "" " -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" +" 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" +" -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" +" -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" +" - 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" @@ -4155,7 +3911,7 @@ msgstr "" " Estado de saída:\n" " Devolve sucesso a não ser que indique uma opção inválida." -#: builtins.c:1133 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4167,8 +3923,7 @@ msgid "" " -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" +" 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" @@ -4192,16 +3947,14 @@ msgstr "" " 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." +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja só de leitura." -#: builtins.c:1155 +#: builtins.c:1154 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" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4216,8 +3969,7 @@ 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" +" comandos executados. Se VALOR for fornecido, atribui VALOR antes de exportar.\n" " \n" " Opções:\n" " -f\trefere funções de consola\n" @@ -4227,10 +3979,9 @@ msgstr "" " 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." +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja inválido." -#: builtins.c:1174 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4260,17 +4011,15 @@ msgstr "" " -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" +" -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." +" Devolve sucesso a não ser que indique uma opção inválida ou NOME seja inválido." -#: builtins.c:1196 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4288,7 +4037,7 @@ msgstr "" " Estado de saída:\n" " Devolve sucesso a não ser que N seja negativo ou maior que $#." -#: builtins.c:1208 builtins.c:1223 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4312,7 +4061,7 @@ msgstr "" " Devolve o estado do último comando executado em NOMEFICH; falha se\n" " NOMEFICH não pode ser lido." -#: builtins.c:1239 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4334,10 +4083,9 @@ msgstr "" " -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." +" Devolve sucesso a não ser que o controlo de tarefa esteja inactivo ou ocorra um erro." -#: builtins.c:1255 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4371,8 +4119,7 @@ msgid "" " -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 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" @@ -4393,8 +4140,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4422,10 +4168,8 @@ 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" +" 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" @@ -4435,17 +4179,14 @@ msgstr "" " \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" +" -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" +" -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" +" -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" @@ -4454,23 +4195,16 @@ msgstr "" " -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" +" -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" +" 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" +" 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" +" FICHEIRO1 -ef FICHEIRO2 Verdadeiro se ficheiro1 for uma ligação rígida a file2.\n" " \n" " Operadores de cadeias:\n" " \n" @@ -4484,20 +4218,15 @@ msgstr "" " 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" +" Verdadeiro se CADEIA1 ficar antes de CADEIA2 lexicamente.\n" " CADEIA1 > CADEIA2\n" -" Verdadeiro se CADEIA1 ficar após CADEIA2 " -"lexicamente.\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" +" -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" @@ -4506,17 +4235,15 @@ msgstr "" " 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" +" 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" +" 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:1337 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4528,12 +4255,11 @@ msgstr "" " Este é um sinónimo para o interno \"test\", mas o último argumento tem\n" " de ser um \"]\" literal, para fechar o \"[\" aberto." -#: builtins.c:1346 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4541,19 +4267,17 @@ msgid "" msgstr "" "Mostrar tempos de processo.\n" " \n" -" Imprime os tempos acumulados de utilizador e sistema para a consola e " -"todos\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:1358 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\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" @@ -4562,34 +4286,26 @@ msgid "" " 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" +" 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" +" 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 or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in 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." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" "Capturar sinais e outros eventos.\n" " \n" @@ -4598,40 +4314,32 @@ msgstr "" " \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" +" 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" +" 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" +" -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 ou um número de " -"sinal.\n" -" Os nomes dos sinais são insensíveis a maiúsculas e o prefixo SIG é " -"opcional.\n" +" Cada SIGNAL_SPEC é um nome de sinal em 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." +" Devolve sucesso a não ser que SIGSPEC seja inválido ou indique uma opção inválida." -#: builtins.c:1394 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4657,8 +4365,7 @@ msgid "" " 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." +" 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" @@ -4675,10 +4382,8 @@ msgstr "" " \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\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" @@ -4686,15 +4391,13 @@ msgstr "" " 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." +" Devolve sucesso se todos os NOMEs forem encontrados; falha se algum não for." -#: builtins.c:1425 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\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" @@ -4739,8 +4442,7 @@ msgid "" msgstr "" "Modifica os limites de recursos da consola.\n" " \n" -" Fornece controlo sobre os recursos disponíveis para consola e " -"processos\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" @@ -4751,8 +4453,7 @@ msgstr "" " -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" +" -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" @@ -4773,22 +4474,18 @@ msgstr "" " \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" +" 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" +" 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." +" Devolve sucesso a não ser que seja indicada uma opção inválida ou ocorra um erro." -#: builtins.c:1475 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4807,94 +4504,74 @@ msgid "" 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" +" 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" +" 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" +" -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." +" Devolve sucesso a não ser que MODO seja inválido ou indique uma opção inválida." -#: builtins.c:1495 -#, fuzzy +#: builtins.c:1494 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" +" 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" +" status is zero. If ID is a 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" +" 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álido ou for " -"indicada\n" +" Devolve o estado da última ID; falha se a ID for inválido ou for indicada\n" " uma opção inválida." -#: builtins.c:1519 +#: builtins.c:1515 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" +" 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" +" 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" +" 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" +" Devolve o estado da última PID; falha se PID for inválido ou for indicada\n" " uma opção inválida." -#: builtins.c:1534 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4908,18 +4585,15 @@ msgid "" 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" +" 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:1548 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4943,14 +4617,13 @@ msgstr "" " \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" +" 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:1566 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4986,7 +4659,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1587 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5004,8 +4677,7 @@ 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" +" 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" @@ -5015,7 +4687,7 @@ msgstr "" " Estado de saída:\n" " O estado devolvido é o estado de PIPELINE." -#: builtins.c:1604 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5033,21 +4705,16 @@ msgstr "" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1616 +#: builtins.c:1612 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" +" 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" +" `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" @@ -5056,22 +4723,17 @@ 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" +" 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:1633 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5089,7 +4751,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1645 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5107,7 +4769,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1657 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5121,8 +4783,7 @@ msgid "" msgstr "" "Cria um co-processo chamado NOME.\n" " \n" -" Executa COMANDO assincronamente, com a saída e a entrada padrão " -"ligadas\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" @@ -5130,13 +4791,12 @@ msgstr "" " Estado de saída:\n" " O comando coproc devolve um estado de saída 0." -#: builtins.c:1671 +#: builtins.c:1667 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" +" 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" @@ -5153,7 +4813,7 @@ msgstr "" " Estado de saída:\n" " Devolve sucesso a não ser que NOME seja só de leitura." -#: builtins.c:1685 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -5171,7 +4831,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado do último comando executado." -#: builtins.c:1697 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -5195,7 +4855,7 @@ msgstr "" " Estado de saída:\n" " Devolve o estado da tarefa retomada." -#: builtins.c:1712 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5213,16 +4873,13 @@ msgstr "" " Estado de saída:\n" " Devolve 1 se EXPRESSÃO avaliar como 0; senão, devolve 0." -#: builtins.c:1724 +#: builtins.c:1720 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" +" 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" @@ -5243,29 +4900,22 @@ 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" +" 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" +" 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:1750 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5323,11 +4973,9 @@ msgstr "" " 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" +" 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" +" 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" @@ -5340,8 +4988,7 @@ msgstr "" " \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" +" 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" @@ -5364,17 +5011,15 @@ msgstr "" " \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" +" 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" +" 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:1807 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5432,7 +5077,7 @@ msgstr "" " Devolve sucesso a não ser que indique um argumento inválido ou a\n" " troca de pastas falhe." -#: builtins.c:1841 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5482,7 +5127,7 @@ msgstr "" " Devolve sucesso a não ser que indique um argumento inválido ou a troca\n" " de pastas falhe." -#: builtins.c:1871 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5534,17 +5179,15 @@ msgstr "" " \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" +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro" -#: builtins.c:1902 -#, fuzzy +#: builtins.c:1898 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" +" arguments, list all shell options with an indication of whether or not each\n" +" is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5574,7 +5217,7 @@ msgstr "" " Devolve sucesso se OPTNOME estiver activado; falha se indicar uma opção\n" " inválida ou OPTNOME esteja desactivada." -#: builtins.c:1923 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5582,34 +5225,27 @@ msgid "" " -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" +" 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" +" 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" +" 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" +" %(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" +" 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" +" 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" @@ -5620,43 +5256,33 @@ msgstr "" " \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" +" 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" +" %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" +" 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" +" 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:1957 +#: builtins.c:1953 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" +" 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" @@ -5677,15 +5303,12 @@ msgid "" 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" +" 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" +" -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" @@ -5697,13 +5320,12 @@ msgstr "" " as opções de letras maiúsculas estão listadas acima. A opção -D toma\n" " precedência sobre -E." -#: builtins.c:1985 +#: builtins.c:1981 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" +" completions. If the optional WORD argument is supplied, matches against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5716,19 +5338,15 @@ msgstr "" " 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." +" Devolve sucesso a não ser que indique uma opção inválida ou ocorra um erro." -#: builtins.c:2000 +#: builtins.c:1996 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" +" 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" @@ -5751,12 +5369,9 @@ msgid "" 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" +" 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\tDefinir opção de conclusão OPÇÃO para cada NOME\n" @@ -5767,40 +5382,31 @@ msgstr "" " \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" +" 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" +" 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" +" 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:2030 +#: builtins.c:2026 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" +" 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" +" -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" +" -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" @@ -5813,31 +5419,25 @@ msgid "" " 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" +" 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" +" 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" +" 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" +" -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" +" -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" @@ -5851,16 +5451,14 @@ msgstr "" " 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" +" 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" +" 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:2066 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/po/pt_BR.po b/po/pt_BR.po index 2457fb957..3f4e799bf 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -7,133 +7,131 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" "PO-Revision-Date: 2016-10-04 06:47-0200\n" "Last-Translator: Rafael Fontenelle \n" -"Language-Team: Brazilian Portuguese \n" +"Language-Team: Brazilian Portuguese \n" +"Language: pt_BR\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Language: pt_BR\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n" "X-Generator: Virtaal 0.7.1\n" "X-Bugs: Report translation errors to the Language-Team address.\n" -#: arrayfunc.c:58 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "subscrito de array incorreto" -#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 -#: variables.c:2922 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: removendo o atributo nameref" -#: arrayfunc.c:398 builtins/declare.def:831 +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: impossível converter array indexado para associativo" -#: arrayfunc.c:582 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: chave de array associativo inválida" -#: arrayfunc.c:584 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: impossível atribuir a índice não numérico" -#: arrayfunc.c:629 +#: arrayfunc.c:625 #, 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:436 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: impossível criar: %s" -#: bashline.c:4111 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" -msgstr "" -"bash_execute_unix_command: impossível localizar mapa de teclas para comando" +msgstr "bash_execute_unix_command: impossível localizar mapa de teclas para comando" -#: bashline.c:4221 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: primeiro caractere não-espaço em branco não é `\"'" -#: bashline.c:4250 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "sem `%c' de fechamento em %s" -#: bashline.c:4284 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s faltando separador dois-pontos" -#: braces.c:331 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "expansão de chaves: impossível alocar memória para %s" -#: braces.c:429 -#, fuzzy, c-format -msgid "brace expansion: failed to allocate memory for %u elements" +#: braces.c:427 +#, 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" -#: braces.c:473 +#: braces.c:471 #, 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:131 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "`%s': nome de apelido (alias) inválido" -#: builtins/bind.def:122 builtins/bind.def:125 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "edição de linha não habilitada" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "`%s': nome de mapa de teclas inválido" -#: builtins/bind.def:252 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: impossível ler: %s" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:270 +#, c-format +msgid "`%s': cannot unbind" +msgstr "`%s': impossível desassociar (unbind)" + +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "`%s': nome de função desconhecida" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s não está associada a qualquer tecla.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, 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 (unbind)" - -#: builtins/break.def:77 builtins/break.def:119 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "número de loops" -#: builtins/break.def:139 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "significativo apenas em um loop de `for', `while' ou `until'" @@ -147,164 +145,162 @@ msgstr "" " \n" " Sem EXPR, retorna " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME não definida" -#: builtins/cd.def:327 builtins/common.c:161 test.c:889 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "número excessivo de argumentos" -#: builtins/cd.def:334 +#: builtins/cd.def:336 msgid "null directory" msgstr "diretório nulo" -#: builtins/cd.def:345 +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD não definida" -#: builtins/common.c:96 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "linha %d: " -#: builtins/common.c:134 error.c:264 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "aviso: " -#: builtins/common.c:148 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: uso: " -#: builtins/common.c:193 shell.c:510 shell.c:838 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: a opção requer um argumento" -#: builtins/common.c:200 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: requer argumento numérico" -#: builtins/common.c:207 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: não encontrado" -#: builtins/common.c:216 shell.c:851 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: opção inválida" -#: builtins/common.c:223 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: nome de opção inválido" -#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "`%s': não é um identificador válido" -#: builtins/common.c:240 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "número octal inválido" -#: builtins/common.c:242 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "número do hexa inválido" -#: builtins/common.c:244 expr.c:1538 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "número inválido" -#: builtins/common.c:252 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: especificação de sinal inválida" -#: builtins/common.c:259 +#: builtins/common.c:265 #, 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" +msgstr "`%s': não é um identificador de processo (pid) nem é uma especificação de trabalho válida" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: a variável permite somente leitura" -#: builtins/common.c:274 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s fora dos limites" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "argumento" -#: builtins/common.c:276 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s fora dos limites" -#: builtins/common.c:284 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: trabalho não existe" -#: builtins/common.c:292 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: nenhum controle de trabalho" -#: builtins/common.c:294 +#: builtins/common.c:300 msgid "no job control" msgstr "nenhum controle de trabalho" -#: builtins/common.c:304 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: restrição" -#: builtins/common.c:306 +#: builtins/common.c:312 msgid "restricted" msgstr "restrição" -#: builtins/common.c:314 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: não é um comando interno do shell" -#: builtins/common.c:323 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "erro de escrita: %s" -#: builtins/common.c:331 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "erro ao definir atributos do terminal: %s" -#: builtins/common.c:333 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "erro ao obter atributos do terminal: %s" -#: builtins/common.c:579 +#: builtins/common.c:585 #, 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:645 builtins/common.c:647 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: especificação de trabalho ambígua" -#: builtins/common.c:908 +#: builtins/common.c:918 msgid "help not available in this version" msgstr "ajuda não disponível nesta versão" @@ -313,69 +309,69 @@ msgstr "ajuda não disponível nesta versão" msgid "%s: invalid action name" msgstr "%s: nome de ação inválido" -#: builtins/complete.def:452 builtins/complete.def:653 -#: builtins/complete.def:874 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: nenhuma especificação de completação" -#: builtins/complete.def:707 +#: builtins/complete.def:699 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:709 +#: builtins/complete.def:701 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:847 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "não se está executando atualmente função de completação" -#: builtins/declare.def:132 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "somente pode ser usado em uma função" -#: builtins/declare.def:369 builtins/declare.def:736 +#: builtins/declare.def:332 builtins/declare.def:685 #, 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:380 variables.c:3161 +#: builtins/declare.def:343 variables.c:2959 #, 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:385 variables.c:2018 variables.c:3083 variables.c:3095 -#: variables.c:3158 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 #, c-format msgid "%s: circular name reference" msgstr "%s referência circular de nome" -#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 #, 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:500 +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "impossível usar `-f' para criar funções" -#: builtins/declare.def:512 execute_cmd.c:5797 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: função somente para leitura" -#: builtins/declare.def:804 +#: builtins/declare.def:753 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: atribuição de array composto com aspas está obsoleto" -#: builtins/declare.def:818 +#: builtins/declare.def:767 #, 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:825 builtins/read.def:784 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: impossível converter array associativo para indexado" @@ -409,68 +405,68 @@ msgstr "%s: não foi carregado dinamicamente" msgid "%s: cannot delete: %s" msgstr "%s: impossível excluir: %s" -#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: é um diretório" -#: builtins/evalfile.c:144 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: não é um arquivo irregular" -#: builtins/evalfile.c:153 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: arquivo é muito grande" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: impossível executar o arquivo binário" -#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: impossível executar: %s" -#: builtins/exit.def:64 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "sair\n" -#: builtins/exit.def:89 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "não é um shell de login: use `exit'" -#: builtins/exit.def:121 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Há trabalhos parados.\n" -#: builtins/exit.def:123 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Há trabalhos em execução.\n" -#: builtins/fc.def:265 +#: builtins/fc.def:269 msgid "no command found" msgstr "nenhum comando encontrado" -#: builtins/fc.def:323 builtins/fc.def:372 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "especificação do histórico" -#: builtins/fc.def:393 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: impossível abrir arquivo temporário: %s" -#: builtins/fg_bg.def:152 builtins/jobs.def:284 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "atual" -#: builtins/fg_bg.def:161 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "o trabalho %d iniciou sem controle de trabalho" @@ -485,40 +481,38 @@ 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:91 +#: builtins/hash.def:92 msgid "hashing disabled" msgstr "hashing está desabilitado" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: tabela de hash está vazia\n" -#: builtins/hash.def:266 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "número\tcomando\n" -#: builtins/help.def:133 +#: builtins/help.def:135 +#, c-format 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:185 +#: builtins/help.def:187 #, c-format -msgid "" -"no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." -msgstr "" -"nenhum tópico de ajuda corresponde a `%s'. Tente `help help' ou `man -k %s' " -"ou `info %s'." +msgid "no help topics match `%s'. Try `help help' or `man -k %s' or `info %s'." +msgstr "nenhum tópico de ajuda corresponde a `%s'. Tente `help help' ou `man -k %s' ou `info %s'." -#: builtins/help.def:224 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: impossível abrir: %s" -#: builtins/help.def:524 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -529,32 +523,29 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"Esses comandos shell são definidos internamente. Digite `help' para ver " -"essa\n" +"Esses comandos shell são definidos internamente. Digite `help' para ver essa\n" "lista. Digite `help NOME' para descobrir mais sobre a função `NOME'.\n" "Use `info bash' para descobrir mais sobre o shell em geral.\n" -"Use `man -k' ou `info' para descobrir mais sobre comandos que não estão " -"nesta\n" +"Use `man -k' ou `info' para descobrir mais sobre comandos que não estão nesta\n" "lista.\n" "\n" "Um asterisco (*) próximo ao nome significa que o comando está desabilitado.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "impossível usar mais de um dentre -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 +#: builtins/history.def:187 msgid "history position" msgstr "posição no histórico" -#: builtins/history.def:331 +#: builtins/history.def:264 #, c-format msgid "%s: invalid timestamp" msgstr "%s: marca de tempo inválida" -#: builtins/history.def:442 +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: expansão do histórico falhou" @@ -568,16 +559,16 @@ msgstr "%s: inlib falhou" msgid "no other options allowed with `-x'" msgstr "nenhuma outra opção permitida com `-x'" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: argumentos devem ser IDs de trabalhos ou processo" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Erro desconhecido" -#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "esperava uma expressão" @@ -586,69 +577,69 @@ msgstr "esperava uma expressão" msgid "%s: not an indexed array" msgstr "%s: não é um array indexado" -#: builtins/mapfile.def:271 builtins/read.def:305 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: especificação de descritor de arquivo inválida" -#: builtins/mapfile.def:279 builtins/read.def:312 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: descritor de arquivo inválido: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: número de linhas inválido" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: origem do array inválido" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: quantidade de chamadas inválida" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "nome de variável array vazio" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "requer suporte a variável de array" -#: builtins/printf.def:416 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "`%s': faltando caractere de formato" -#: builtins/printf.def:471 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "`%c': especificação de formato de tempo inválida" -#: builtins/printf.def:673 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "`%c': caractere de formato inválido" -#: builtins/printf.def:699 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "aviso: %s: %s" -#: builtins/printf.def:785 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "problema ao analisar formato: %s" -#: builtins/printf.def:882 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "faltando dígito hexa para \\x" -#: builtins/printf.def:897 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "faltando dígito unicode para \\%c" @@ -662,19 +653,19 @@ msgstr "nenhum outro diretório" msgid "%s: invalid argument" msgstr "%s argumento inválido" -#: builtins/pushd.def:480 +#: builtins/pushd.def:475 msgid "" msgstr "" -#: builtins/pushd.def:524 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "pilha de diretórios está vazia" -#: builtins/pushd.def:526 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "índice de pilha de diretórios" -#: builtins/pushd.def:701 +#: builtins/pushd.def:696 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,12 +680,10 @@ msgid "" " \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" +" +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" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Exibe a lista de diretórios atualmente memorizados. Diretórios são\n" @@ -716,7 +705,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:723 +#: builtins/pushd.def:718 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 +752,7 @@ msgstr "" " \n" " O comando interno `dirs' exibe a pilha de diretórios." -#: builtins/pushd.def:748 +#: builtins/pushd.def:743 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,48 +790,45 @@ msgstr "" " \n" " O comando interno `dirs' exibe a pilha de diretório." -#: builtins/read.def:277 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: especificação de tempo limite inválida" -#: builtins/read.def:729 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "erro de leitura: %d: %s" -#: builtins/return.def:68 +#: builtins/return.def:71 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')" +msgstr "possível retornar (`return') apenas de uma função ou script carregado (com `source')" -#: builtins/set.def:834 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" -msgstr "" -"impossível simultaneamente remover definição de uma função e uma variável" +msgstr "impossível simultaneamente remover definição de uma função e uma variável" -#: builtins/set.def:881 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: impossível remover definição" -#: builtins/set.def:902 variables.c:3597 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: impossível remover definição: %s somente-leitura" -#: builtins/set.def:915 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: não é uma variável array" -#: builtins/setattr.def:189 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: não é uma função" -#: builtins/setattr.def:194 +#: builtins/setattr.def:196 #, c-format msgid "%s: cannot export" msgstr "%s: impossível exportar" @@ -851,21 +837,20 @@ msgstr "%s: impossível exportar" msgid "shift count" msgstr "número de shift" -#: builtins/shopt.def:301 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" -msgstr "" -"impossível simultaneamente definir e remover definição de opções do shell" +msgstr "impossível simultaneamente definir e remover definição de opções do shell" -#: builtins/shopt.def:403 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: nome de opção de shell inválido" -#: builtins/source.def:128 +#: builtins/source.def:131 msgid "filename argument required" msgstr "requer argumento arquivo" -#: builtins/source.def:154 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: arquivo não encontrado" @@ -878,61 +863,61 @@ msgstr "impossível suspender" msgid "cannot suspend a login shell" msgstr "impossível suspender um shell de login." -#: builtins/type.def:235 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s está apelidada para `%s'\n" -#: builtins/type.def:256 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s é uma palavra-chave do shell\n" -#: builtins/type.def:275 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s é uma função\n" -#: builtins/type.def:299 +#: builtins/type.def:300 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s é um comando interno especial do shell\n" -#: builtins/type.def:301 +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s é um comando interno do shell\n" -#: builtins/type.def:323 builtins/type.def:408 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s é %s\n" -#: builtins/type.def:343 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s está na tabela hash (%s)\n" -#: builtins/ulimit.def:396 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: argumento limite inválido" -#: builtins/ulimit.def:422 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "`%c': comando incorreto" -#: builtins/ulimit.def:451 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: impossível obter limite: %s" -#: builtins/ulimit.def:477 +#: builtins/ulimit.def:479 msgid "limit" msgstr "limite" -#: builtins/ulimit.def:489 builtins/ulimit.def:789 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: impossível modificar limite: %s" @@ -951,375 +936,357 @@ 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:89 error.c:347 error.c:349 error.c:351 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " linha " -#: error.c:164 +#: error.c:165 #, c-format msgid "last command: %s\n" msgstr "último comando: %s\n" -#: error.c:172 +#: error.c:173 #, c-format msgid "Aborting..." msgstr "Abortando..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:287 +#: error.c:288 #, c-format msgid "INFORM: " msgstr "INFORM: " -#: error.c:462 +#: error.c:463 msgid "unknown command error" msgstr "erro de comando desconhecido" -#: error.c:463 +#: error.c:464 msgid "bad command type" msgstr "tipo de comando incorreto" -#: error.c:464 +#: error.c:465 msgid "bad connector" msgstr "conector incorreto" -#: error.c:465 +#: error.c:466 msgid "bad jump" msgstr "desvio incorreto" -#: error.c:503 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: variável não associada" -#: eval.c:242 +#: eval.c:209 #, 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" +msgstr "\atempo limite de espera excedido aguardando entrada: fim automático da sessão\n" -#: execute_cmd.c:536 +#: execute_cmd.c:527 #, 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:1294 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: `%c': caractere de formato inválido" -#: execute_cmd.c:2330 +#: execute_cmd.c:2273 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] ainda existe" -#: execute_cmd.c:2456 +#: execute_cmd.c:2377 msgid "pipe error" msgstr "erro de `pipe'" -#: execute_cmd.c:4624 +#: execute_cmd.c:4496 #, 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:4636 +#: execute_cmd.c:4508 #, 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:4742 +#: execute_cmd.c:4616 #, 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:5285 +#: execute_cmd.c:5144 #, 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:5383 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: comando não encontrado" -#: execute_cmd.c:5627 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5665 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: interpretador incorreto" -#: execute_cmd.c:5702 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: impossível executar o arquivo binário: %s" -#: execute_cmd.c:5788 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "`%s': é um comando interno especial" -#: execute_cmd.c:5840 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "impossível duplicar fd (descritor de arquivo) %d para fd %d" -#: expr.c:263 +#: expr.c:259 msgid "expression recursion level exceeded" msgstr "excedido o nível de recursividade da expressão" -#: expr.c:291 +#: expr.c:283 msgid "recursion stack underflow" msgstr "esvaziamento de pilha de recursão" -#: expr.c:453 +#: expr.c:431 msgid "syntax error in expression" msgstr "erro de sintaxe na expressão" -#: expr.c:497 +#: expr.c:475 msgid "attempted assignment to non-variable" msgstr "tentativa de atribuição para algo que não é uma variável" -#: expr.c:506 -#, fuzzy -msgid "syntax error in variable assignment" -msgstr "erro de sintaxe na expressão" - -#: expr.c:520 expr.c:886 +#: expr.c:495 expr.c:858 msgid "division by 0" msgstr "divisão por 0" -#: expr.c:567 +#: expr.c:542 msgid "bug: bad expassign token" msgstr "erro de programação: token incorreto passado para expassign()" -#: expr.c:621 +#: expr.c:595 msgid "`:' expected for conditional expression" msgstr "esperava `:' para expressão condicional" -#: expr.c:947 +#: expr.c:919 msgid "exponent less than 0" msgstr "exponente menor que 0" -#: expr.c:1004 +#: expr.c:976 msgid "identifier expected after pre-increment or pre-decrement" msgstr "esperava identificador após pré-acréscimo ou pré-decréscimo" -#: expr.c:1030 +#: expr.c:1002 msgid "missing `)'" msgstr "faltando `)'" -#: expr.c:1081 expr.c:1458 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "erro de sintaxe: esperava operando" -#: expr.c:1460 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "erro de sintaxe: operador aritmético inválido" -#: expr.c:1484 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (token de erro é \"%s\")" -#: expr.c:1542 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "base aritmética inválida" -#: expr.c:1562 +#: expr.c:1497 msgid "value too great for base" msgstr "valor muito grande para esta base de numeração" -#: expr.c:1611 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: erro de expressão\n" -#: general.c:69 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: impossível acessar os diretórios pais (anteriores)" -#: input.c:99 subst.c:5858 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" -msgstr "" -"impossível redefinir modo `nodelay' para o descritor de arquivo (fd) %d" +msgstr "impossível redefinir modo `nodelay' para o descritor de arquivo (fd) %d" -#: input.c:266 +#: input.c:271 #, 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" +msgstr "impossível alocar novo descritor de arquivo (fd) para a entrada do `bash' a partir do fd %d" -#: input.c:274 +#: input.c:279 #, 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" +msgstr "save_bash_input: buffer já existe para o novo descritor de arquivo (fd) %d" #: jobs.c:527 msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: `pipe' de pgrp" -#: jobs.c:1080 +#: jobs.c:1035 #, 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" +msgstr "identificador de processo (pid) %d bifurcado (fork) aparece no trabalho em execução %d" -#: jobs.c:1199 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "excluindo trabalho parado %d com grupo de processo %ld" -#: jobs.c:1303 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: processo %5ld (%s) em the_pipeline" -#: jobs.c:1306 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: pid %5ld (%s) marcado como ainda vivo" -#: jobs.c:1635 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: o identificador do processo (pid) não existe" -#: jobs.c:1650 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Sinal %d" -#: jobs.c:1664 jobs.c:1690 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Concluído" -#: jobs.c:1669 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Parado" -#: jobs.c:1673 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Parado(%s)" -#: jobs.c:1677 +#: jobs.c:1632 msgid "Running" msgstr "Executando" -#: jobs.c:1694 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Concluído(%d)" -#: jobs.c:1696 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Fim da execução com status %d" -#: jobs.c:1699 +#: jobs.c:1654 msgid "Unknown status" msgstr "Status desconhecido" -#: jobs.c:1786 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(imagem do núcleo gravada)" -#: jobs.c:1805 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (wd: %s)" -#: jobs.c:2033 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "`setpgid' filho (%ld para %ld)" -#: jobs.c:2395 nojobs.c:657 +#: jobs.c:2347 nojobs.c:654 #, 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:2687 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: Sem registro do processo %ld" -#: jobs.c:3048 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: trabalho %d está parado" -#: jobs.c:3355 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: o trabalho terminou" -#: jobs.c:3364 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: o trabalho %d já está em plano de fundo" -#: jobs.c:3590 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: ativando WNOHANG para evitar bloqueio indefinido" -#: jobs.c:4114 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s, linha %d: " -#: jobs.c:4128 nojobs.c:900 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (imagem do núcleo gravada)" -#: jobs.c:4140 jobs.c:4153 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(wd agora: %s)\n" -#: jobs.c:4185 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp falhou" -#: jobs.c:4241 -#, fuzzy -msgid "initialize_job_control: no job control in background" -msgstr "initialize_job_control: disciplina da linha" - -#: jobs.c:4257 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: disciplina da linha" -#: jobs.c:4267 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4288 jobs.c:4297 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "impossível definir grupo do processo do terminal (%d)" -#: jobs.c:4302 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "nenhum controle de trabalho neste shell" -#: lib/malloc/malloc.c:306 +#: lib/malloc/malloc.c:296 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: asserção falhou: %s\n" -#: lib/malloc/malloc.c:322 +#: lib/malloc/malloc.c:312 #, c-format msgid "" "\r\n" @@ -1328,39 +1295,39 @@ msgstr "" "\r\n" "malloc: %s:%d: asserção remendada\r\n" -#: lib/malloc/malloc.c:323 +#: lib/malloc/malloc.c:313 msgid "unknown" msgstr "desconhecido" -#: lib/malloc/malloc.c:811 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: bloco socado em lista livre" -#: lib/malloc/malloc.c:888 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: chamado com argumento de bloco já liberado" -#: lib/malloc/malloc.c:891 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: chamado com argumento de bloco não alocado" -#: lib/malloc/malloc.c:910 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: esvaziamento de pilha detectado; mh_nbytes fora do limite" -#: lib/malloc/malloc.c:916 +#: lib/malloc/malloc.c:906 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:1015 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: chamado com argumento de bloco não alocado" -#: lib/malloc/malloc.c:1030 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: esvaziamento de pilha detectado; mh_nbytes fora do limite" -#: lib/malloc/malloc.c:1036 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: tamanhos de porções do início e do fim são diferentes" @@ -1402,22 +1369,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:205 +#: locale.c:200 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: impossível alterar locale (%s)" -#: locale.c:207 +#: locale.c:202 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: impossível alterar locale (%s): %s" -#: locale.c:272 +#: locale.c:259 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: impossível alterar locale (%s)" -#: locale.c:274 +#: locale.c:261 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: impossível alterar locale (%s): %s" @@ -1435,149 +1402,145 @@ 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:317 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "erro de sintaxe: requer expressão aritmética" -#: make_cmd.c:319 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "erro de sintaxe: `;' inesperado" -#: make_cmd.c:320 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "erro de sintaxe: `((%s))'" -#: make_cmd.c:572 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: tipo da instrução incorreto %d" -#: make_cmd.c:657 +#: make_cmd.c:669 #, 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')" +msgstr "here-document na linha %d delimitado pelo fim do arquivo (desejava `%s')" -#: make_cmd.c:756 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection: instrução de redirecionamento `%d' fora do limite" -#: parse.y:2369 +#: parse.y:2324 #, 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" +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:2772 +#: parse.y:2700 msgid "maximum here-document count exceeded" msgstr "excedido o número máximo de here-document" -#: parse.y:3511 parse.y:3881 +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "encontrado EOF inesperado enquanto procurava por `%c' correspondente" -#: parse.y:4581 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "encontrado EOF inesperado enquanto procurava por `]]'" -#: parse.y:4586 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "erro de sintaxe na expressão condicional: token inesperado `%s'" -#: parse.y:4590 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "erro de sintaxe na expressão condicional" -#: parse.y:4668 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "token inesperado `%s', esperava`)'" -#: parse.y:4672 +#: parse.y:4501 msgid "expected `)'" msgstr "esperava `)'" -#: parse.y:4700 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "argumento inesperado `%s' para operador unário condicional" -#: parse.y:4704 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "argumento inesperado para operador unário condicional" -#: parse.y:4750 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "token inesperado `%s', esperava operador binário condicional" -#: parse.y:4754 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "esperava operador binário condicional" -#: parse.y:4776 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "argumento inesperado `%s' para operador binário condicional" -#: parse.y:4780 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "argumento inesperado para operador binário condicional" -#: parse.y:4791 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "token inesperado `%c' em comando condicional" -#: parse.y:4794 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "token inesperado `%s' em comando condicional" -#: parse.y:4798 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "token inesperado %d em comando condicional" -#: parse.y:6220 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "erro de sintaxe próximo ao token inesperado `%s'" -#: parse.y:6238 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "erro de sintaxe próximo a `%s'" -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "erro de sintaxe: fim prematuro do arquivo" -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error" msgstr "erro de sintaxe" -#: parse.y:6310 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Use \"%s\" para sair do shell.\n" -#: parse.y:6472 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "encontrado EOF inesperado enquanto procurava por `)' correspondente" -#: pcomplete.c:1132 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: função `%s' não encontrada" -#: pcomplete.c:1722 +#: pcomplete.c:1646 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "programmable_completion: %s: possível loop de nova tentativa" @@ -1588,113 +1551,109 @@ msgstr "programmable_completion: %s: possível loop de nova tentativa" msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: COMPSPEC NULO" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: conector incorreto `%d'" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: descritor de arquivo inválido" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: ponteiro de arquivo NULO" -#: print_cmd.c:382 +#: 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:1538 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: `%c': caractere de formato inválido" -#: redir.c:121 redir.c:167 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "descritor de arquivo fora dos limites" -#: redir.c:174 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: redirecionamento ambíguo" -#: redir.c:178 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: impossível sobrescrever arquivo existente" -#: redir.c:183 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: restrição: impossível redirecionar saída" -#: redir.c:188 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "impossível criar arquivo temporário para here-document: %s" -#: redir.c:192 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: impossível atribuir fd a variável" -#: redir.c:588 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "sem suporte a /dev/(tcp|udp)/máquina/porta sem rede" -#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "erro de redirecionamento: impossível duplicar fd" -#: shell.c:343 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "impossível localizar /tmp, por favor crie!" -#: shell.c:347 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp deve ser um nome de diretório válido" -#: shell.c:798 -msgid "pretty-printing mode ignored in interactive shells" -msgstr "" - -#: shell.c:940 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: opção inválida" -#: shell.c:1299 +#: shell.c:1282 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "impossível definir uid para %d: uid efetivo %d" -#: shell.c:1306 +#: shell.c:1289 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "impossível definir gid para %d: gid efetivo %d" -#: shell.c:1494 +#: shell.c:1458 msgid "cannot start debugger; debugging mode disabled" msgstr "possível iniciar o depurador; modo de depuração desabilitado" -#: shell.c:1608 +#: shell.c:1566 #, c-format msgid "%s: Is a directory" msgstr "%s: É um diretório" -#: shell.c:1826 +#: shell.c:1777 msgid "I have no name!" msgstr "Eu não tenho nome!" -#: shell.c:1980 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, versão %s-(%s)\n" -#: shell.c:1981 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1703,52 +1662,49 @@ 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:1983 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "opções-longas-GNU:\n" -#: shell.c:1987 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Opções do shell:\n" -#: shell.c:1988 +#: shell.c:1938 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:2003 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s ou -o opção\n" -#: shell.c:2009 +#: shell.c:1959 #, 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" +msgstr "Digite `%s -c \"help set\"' para mais informações sobre as opções do shell.\n" -#: shell.c:2010 +#: shell.c:1960 #, 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" +msgstr "Digite `%s -c help' para mais informações sobre os comandos internos do shell.\n" -#: shell.c:2011 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Uso o comando `bashbug' para relatar erros.\n" -#: shell.c:2013 +#: shell.c:1963 #, c-format msgid "bash home page: \n" msgstr "página do bash: \n" -#: shell.c:2014 +#: shell.c:1964 #, c-format msgid "General help using GNU software: \n" msgstr "Ajuda geral sobre uso de software GNU: \n" -#: sig.c:695 +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: operação inválida" @@ -1922,21 +1878,21 @@ msgstr "Sinal desconhecido #" msgid "Unknown Signal #%d" msgstr "Sinal desconhecido #%d" -#: subst.c:1450 subst.c:1641 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "substituição incorreta: sem `%s' de fechamento em %s" -#: subst.c:3209 +#: subst.c:3154 #, 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:5734 subst.c:5750 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "impossível criar `pipe' para a substituição do processo" -#: subst.c:5796 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "impossível criar um processo filho para a substituição do processo" @@ -1955,77 +1911,67 @@ msgstr "impossível abrir `pipe' %s para escrita" msgid "cannot duplicate named pipe %s as fd %d" msgstr "impossível duplicar `pipe' %s como descritor de arquivo (fd) %d" -#: subst.c:5990 +#: subst.c:5959 msgid "command substitution: ignored null byte in input" msgstr "substituição de comando: byte nulo ignorado na entrada" -#: subst.c:6121 +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "impossível criar um `pipe' para substituição do comando" -#: subst.c:6164 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "impossível criar um processo filho para substituição do comando" -#: subst.c:6190 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "" -"command_substitute: impossível duplicar o `pipe' como descritor de arquivo " -"(fd) 1" +msgstr "command_substitute: impossível duplicar o `pipe' como descritor de arquivo (fd) 1" -#: subst.c:6641 subst.c:9483 +#: subst.c:6580 subst.c:8939 #, 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:6737 subst.c:6755 subst.c:6903 +#: subst.c:6666 subst.c:8351 subst.c:8371 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: substituição incorreta" + +#: subst.c:6800 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: expansão indireta inválida" -#: subst.c:6771 subst.c:6910 +#: subst.c:6807 #, c-format msgid "%s: invalid variable name" msgstr "%s: nome de variável inválido" -#: subst.c:6962 -#, fuzzy, c-format -msgid "%s: parameter not set" -msgstr "%s: parâmetro nulo ou não inicializado" - -#: subst.c:6964 +#: subst.c:6854 #, c-format msgid "%s: parameter null or not set" msgstr "%s: parâmetro nulo ou não inicializado" -#: subst.c:7201 subst.c:7216 +#: subst.c:7089 subst.c:7104 #, c-format msgid "%s: substring expression < 0" msgstr "%s: expressão de substring < 0" -#: subst.c:8839 subst.c:8860 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: substituição incorreta" - -#: subst.c:8948 +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: impossível atribuir desta maneira" -#: subst.c:9346 -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:8802 +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:9903 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "substituição incorreta: sem \"`\" de fechamento em %s" -#: subst.c:10907 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "sem correspondência: %s" @@ -2048,111 +1994,107 @@ msgstr "esperava `)'" msgid "`)' expected, found %s" msgstr "esperava `)', encontrado %s" -#: test.c:282 test.c:748 test.c:751 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: esperava operador unário" -#: test.c:469 test.c:791 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: esperava operador binário" -#: test.c:873 +#: test.c:869 msgid "missing `]'" msgstr "faltando `]'" -#: trap.c:216 +#: trap.c:224 msgid "invalid signal number" msgstr "número de sinal inválido" -#: trap.c:379 +#: trap.c:387 #, 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:383 +#: trap.c:391 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "" -"run_pending_traps: manipulador de sinal é SIG_DFL, enviando novamente %d (%" -"s) para mim mesmo" +msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: manipulador de sinal é SIG_DFL, enviando novamente %d (%s) para mim mesmo" -#: trap.c:439 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: sinal incorreto %d" -#: variables.c:399 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "erro ao importar a definição da função para `%s'" -#: variables.c:801 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "nível do shell (%d) muito grande, redefinindo para 1" -#: variables.c:2512 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: nenhum contexto de função no atual escopo" -#: variables.c:2531 +#: variables.c:2432 #, 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:3246 +#: variables.c:3043 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: atribuindo inteiro para referência de nome" -#: variables.c:4149 +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: nenhum contexto de função no escopo atual" -#: variables.c:4437 +#: variables.c:4218 #, 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:4442 variables.c:4451 +#: variables.c:4223 variables.c:4232 #, 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:4457 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "Sem `=' na exportstr para %s" -#: variables.c:4911 +#: variables.c:4684 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:4924 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: nenhum contexto em no global_variables" -#: variables.c:4999 +#: variables.c:4772 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" +msgstr "pop_scope: cabeça de shell_variables não é um escopo de ambiente temporário" -#: variables.c:5862 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: impossível abrir como ARQUIVO" -#: variables.c:5867 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: valor inválido para rastrear descritor de arquivo" -#: variables.c:5912 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: valor de compatibilidade fora dos limites" @@ -2162,12 +2104,8 @@ msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "Copyright (C) 2016 Free Software Foundation, Inc." #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" -"Licença GPLv3+: GNU GPL versão 3 ou posterior .\n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "Licença GPLv3+: GNU GPL versão 3 ou posterior .\n" #: version.c:86 version2.c:86 #, c-format @@ -2182,22 +2120,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:93 +#: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: impossível alocar %lu bytes (%lu bytes alocados)" -#: xmalloc.c:95 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: impossível alocar %lu bytes" -#: xmalloc.c:165 +#: xmalloc.c:163 #, 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 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: impossível alocar %lu bytes" @@ -2211,13 +2149,8 @@ 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-TECLAS] [-f ARQUIVO] [-q NOME] [-u NOME] [-r SEQ-" -"TECLAS] [-x SEQ-TECLAS:COMANDO-SHELL] [SEQ-TECLAS:FUNÇÃO-DE-LINHA ou " -"COMANDO-DE-LINHA]" +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-TECLAS] [-f ARQUIVO] [-q NOME] [-u NOME] [-r SEQ-TECLAS] [-x SEQ-TECLAS:COMANDO-SHELL] [SEQ-TECLAS:FUNÇÃO-DE-LINHA ou COMANDO-DE-LINHA]" #: builtins.c:56 msgid "break [n]" @@ -2293,8 +2226,7 @@ msgstr "logout [n]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "" -"fc [-e EDITOR] [-lnr] [PRIMEIRO] [ÚLTIMO] ou fc -s [ANTIGO=NOVO] [COMANDO]" +msgstr "fc [-e EDITOR] [-lnr] [PRIMEIRO] [ÚLTIMO] ou fc -s [ANTIGO=NOVO] [COMANDO]" #: builtins.c:109 msgid "fg [job_spec]" @@ -2313,12 +2245,8 @@ 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 POSIÇÃO] [n] ou history -anrw [ARQUIVO] ou history -ps ARG " -"[ARG...]" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "history [-c] [-d POSIÇÃO] [n] ou history -anrw [ARQUIVO] ou history -ps ARG [ARG...]" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2329,24 +2257,16 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [ESPEC-JOB ... | 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 | ESPEC-JOB ... ou kill -l " -"[SIGSPEC]" +msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgstr "kill [-s SIGSPEC | -n SIGNUM | -SIGSPEC] PID | ESPEC-JOB ... 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 ARRAY] [-d DELIM] [-i TEXTO] [-n NCHARS] [-N NCHARS] [-p " -"CONFIRMAR ] [-t TEMPO] [-u FD] [NOME ...]" +msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgstr "read [-ers] [-a ARRAY] [-d DELIM] [-i TEXTO] [-n NCHARS] [-N NCHARS] [-p CONFIRMAR ] [-t TEMPO] [-u FD] [NOME ...]" #: builtins.c:140 msgid "return [n]" @@ -2409,8 +2329,7 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [MODO]" #: builtins.c:177 -#, fuzzy -msgid "wait [-fn] [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [-n] [ID ...]" #: builtins.c:181 @@ -2438,12 +2357,8 @@ 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" +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" @@ -2503,44 +2418,24 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v VAR] FORMATO [ARGUMENTOS]" #: builtins.c:231 -msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-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 " -"LISTA-PALAVRAS] [-F FUNÇÃO] [-C COMANDO] [-X FILTRO] [-P PREFIXO] [-S " -"SUFIXO] [NOME ...]" +msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-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 LISTA-PALAVRAS] [-F FUNÇÃO] [-C COMANDO] [-X FILTRO] [-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 AÇÃO] [-G GLOBAL] [-W LISTA-" -"PALAVRAS] [-F FUNÇÃO] [-C COMANDO] [-X FILTRO] [-P PREFIXO] [-S SUFIXO] " -"[PALAVRA]" +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 AÇÃO] [-G GLOBAL] [-W LISTA-PALAVRAS] [-F FUNÇÃO] [-C COMANDO] [-X FILTRO] [-P PREFIXO] [-S SUFIXO] [PALAVRA]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o OPÇÃO] [-DE] [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 NÚMERO] [-O ORIGEM] [-s NÚMERO] [-t] [-u FD] [-C " -"CHAMADA] [-c QUANTIDADE] [ARRAY]" +msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "mapfile [-d DELIM] [-n NÚMERO] [-O ORIGEM] [-s NÚMERO] [-t] [-u FD] [-C CHAMADA] [-c QUANTIDADE] [ARRAY]" #: builtins.c:244 -#, fuzzy -msgid "" -"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]" +msgid "readarray [-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]" # help alias #: builtins.c:256 @@ -2558,8 +2453,7 @@ msgid "" " -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" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" "Define ou exibe apelidos (aliases).\n" @@ -2608,30 +2502,25 @@ msgid "" " 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" +" 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" +" -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" +" -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" +" -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" @@ -2651,33 +2540,24 @@ msgstr "" " vi, vi-move, vi-command e vi-insert.\n" " -l Lista nomes de funções.\n" " -P Lista nomes e associações de função.\n" -" -p Lista funções e associações em uma forma que pode " -"ser\n" +" -p Lista funções e associações em uma forma que pode ser\n" " usada como entrada.\n" -" -S Lista sequências de teclas que chamam macros e " -"seus\n" +" -S Lista sequências de teclas que chamam macros e seus\n" " valores\n" -" -s Lista sequências de teclas que chamam macros e " -"seus\n" -" valores em uma forma que pode ser usada como " -"entrada.\n" +" -s Lista sequências de teclas que chamam macros e seus\n" +" valores em uma forma que pode ser usada como entrada.\n" " -V Lista nomes e valores de variáveis\n" -" -v Lista nomes e valores de variáveis em uma forma " -"que\n" +" -v Lista nomes e valores de variáveis em uma forma que\n" " pode ser usada como entrada.\n" -" -q NOME Consulta sobre quais teclas chamam a função " -"informada.\n" -" -u NOME Desassocia todas teclas que estão associadas à " -"função\n" +" -q NOME Consulta sobre quais teclas chamam a função informada.\n" +" -u NOME Desassocia todas teclas que estão associadas à função\n" " informada.\n" " -r SEQ-TECLAS Remove a associação para SEQ-TECLAS.\n" " -f ARQUIVO Lê associações de tecla de ARQUIVO.\n" " -x SEQ-TECLAS:COMANDO-SHELL\n" -" Faz com que COMANDO-SHELL seja executado ao " -"inserir\n" +" Faz com que COMANDO-SHELL seja executado ao inserir\n" " SEQ-TECLAS.\n" -" -X Lista sequência de teclas associadas com -x e " -"comandos\n" +" -X Lista sequência de teclas associadas com -x e comandos\n" " associados em uma forma que pode ser usada como\n" " entrada.\n" " \n" @@ -2731,8 +2611,7 @@ msgid "" " \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" +" 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" @@ -2768,8 +2647,7 @@ msgstr "" "Retorna o contexto da chamada de sub-rotina atual.\n" " \n" " Sem EXPR, retorna \"$linha $arquivo\". Com EXPR, retorna\n" -" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada " -"para\n" +" \"$linha $sub-rotina $arquivo\"; essa informação extra pode ser usada para\n" " fornecer um rastro da pilha.\n" " \n" " O valor de EXPR indica quantos quadros de chamada deve voltar antes do\n" @@ -2784,22 +2662,16 @@ msgstr "" msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\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" +" 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" +" 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" @@ -2815,13 +2687,11 @@ msgid "" " \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" +" `..' 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" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" "Altera o diretório de trabalho do shell.\n" @@ -2829,20 +2699,17 @@ msgstr "" " Altera o diretório atual para DIR, sendo o padrão de DIR o mesmo valor\n" " da variável HOME.\n" " \n" -" A variável CDPATH define o caminho de pesquisa para o diretório " -"contendo\n" +" A variável CDPATH define o caminho de pesquisa para o diretório contendo\n" " DIR. Nomes de diretórios alternativos em CDPATH são separados por\n" " dois-pontos (:). Um nome de diretório nulo é o mesmo que o diretório\n" " atual. Se DIR inicia com uma barra (/), então CDPATH não é usada.\n" " \n" -" Se o diretório não for encontrado e a opção `cdable_vars` estiver " -"definida\n" +" Se o diretório não for encontrado e a opção `cdable_vars` estiver definida\n" " no shell, a palavra é presumida como sendo o nome de uma variável. Se\n" " tal variável possuir um valor, este valor é usado para DIR.\n" " \n" " Opções:\n" -" -L\tforça links simbólicos a serem seguidos: resolver links " -"simbólicos\n" +" -L\tforça links simbólicos a serem seguidos: resolver links simbólicos\n" " \t\tem DIR após processar instâncias de `..'\n" " -P\tusa a estrutura do diretório físico sem seguir links\n" " \t\tsimbólicos: resolve links simbólicos em DIR antes de processar\n" @@ -2853,15 +2720,12 @@ msgstr "" " \t\tatributos estendidos como um diretório contendo os atributos de\n" " \t\tarquivo\n" " \n" -" O padrão é seguir links simbólicos, como se `-L' tivesse sido " -"especificada.\n" -" `..' é processada removendo o componente de caminho imediatamente " -"anterior\n" +" O padrão é seguir links simbólicos, como se `-L' tivesse sido especificada.\n" +" `..' é processada removendo o componente de caminho imediatamente anterior\n" " de volta para uma barra ou para o início de DIR.\n" " \n" " Status de saída:\n" -" Retorna 0, se o diretório tiver sido alterado e se $PWD está definida " -"com\n" +" Retorna 0, se o diretório tiver sido alterado e se $PWD está definida com\n" " sucesso quando a opção -P for usada; do contrário, retorna não-zero." # help pwd @@ -2942,8 +2806,7 @@ 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" +" 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" @@ -2973,7 +2836,6 @@ msgstr "" # help declare #: builtins.c:490 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2992,11 +2854,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 the value of each NAME to lower case on assignment\n" +" -l\tto convert NAMEs 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" +" -u\tto convert NAMEs to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3004,8 +2866,7 @@ msgid "" " 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" +" 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" @@ -3014,8 +2875,7 @@ msgid "" msgstr "" "Define valores e atributos de variável.\n" " \n" -" Declara variáveis e a elas fornece atributos. Se nenhum NOME for " -"fornecido,\n" +" Declara variáveis e a elas fornece atributos. Se nenhum NOME for fornecido,\n" " exibe os atributos e valores de todas as variáveis.\n" " \n" " Opções:\n" @@ -3079,8 +2939,7 @@ msgstr "" " Cria uma variável local chamada NOME e lhe dá VALOR. OPÇÃO pode ser\n" " qualquer opção aceita pelo `declare'.\n" " \n" -" Variáveis locais podem ser usadas apenas em uma função; elas são " -"visíveis\n" +" Variáveis locais podem ser usadas apenas em uma função; elas são visíveis\n" " apenas para a função na qual elas foram definidas, bem como para seus\n" " filhos.\n" " \n" @@ -3094,8 +2953,7 @@ msgstr "" msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by " -"a\n" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3235,8 +3093,7 @@ msgstr "" msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\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" @@ -3317,8 +3174,7 @@ msgstr "" " caractere de opção encontrada. Se getopts não estiver no modo\n" " silencioso, uma opção inválida é vista, getopts coloca um '?' em\n" " NOME e remove definição de OPTARG. Se um argumento obrigatório não for\n" -" encontrado, um '?' é colocado em NOME, OPTARG tem sua definição " -"removida\n" +" encontrado, um '?' é colocado em NOME, OPTARG tem sua definição removida\n" " e uma mensagem de diagnóstico é mostrada.\n" " \n" " Se a variável shell OPTERR possuir o valor 0, getopts desabilita a\n" @@ -3338,8 +3194,7 @@ 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" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3347,13 +3202,11 @@ msgid "" " -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" +" 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." +" Returns success unless COMMAND is not found or a redirection error occurs." msgstr "" "Substitui o shell com o comando fornecido.\n" " \n" @@ -3392,8 +3245,7 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" "Sai de um shell de login.\n" @@ -3406,15 +3258,13 @@ msgstr "" 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" +" 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" +" -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" @@ -3428,14 +3278,12 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" Returns success or status of executed command; non-zero if an error occurs." msgstr "" "Exibe ou executa comandos da lista do histórico.\n" " \n" " fc é usado para listar ou editar e re-executar comandos da lista de\n" -" histórico. PRIMEIRO e ÚLTIMO podem ser números especificando o " -"intervalo\n" +" histórico. PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo\n" " ou PRIMEIRO pode ser uma string, o que significa o comando mais recente\n" " iniciando com aquela string.\n" " \n" @@ -3476,18 +3324,15 @@ msgstr "" " a noção do shell de trabalho atual é usada.\n" " \n" " Status de saída:\n" -" Status do comando colocado em primeiro plano ou falha, se ocorrer um " -"erro." +" Status do comando colocado em primeiro plano ou falha, se ocorrer um erro." # help bg #: builtins.c:773 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" +" 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" @@ -3509,8 +3354,7 @@ 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" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3529,8 +3373,7 @@ msgid "" msgstr "" "Memoriza ou exibe localizações de programas.\n" " \n" -" Determina e memoriza do caminho completo de cada comando NOME. Se " -"nenhum\n" +" Determina e memoriza do caminho completo de cada comando NOME. Se nenhum\n" " argumento for fornecido, exibe informação sobre comandos memorizados.\n" " \n" " Opções:\n" @@ -3551,7 +3394,6 @@ msgstr "" # help help #: builtins.c:812 -#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3566,11 +3408,10 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifying a help topic\n" +" PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" "Exibe informação sobre comandos internos (builtin).\n" " \n" @@ -3592,7 +3433,6 @@ msgstr "" " inválida seja fornecida." #: builtins.c:836 -#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3601,8 +3441,7 @@ 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. Negative\n" -" \t\toffsets count back from the end of the history list\n" +" -d offset\tdelete the history entry at position 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" @@ -3620,8 +3459,7 @@ msgid "" " \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" +" 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." @@ -3659,7 +3497,7 @@ msgstr "" " ocorra um erro." # help jobs -#: builtins.c:873 +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3705,7 +3543,7 @@ msgstr "" " ocorra um erro. Se -x for usado, retorna o status de saída do COMANDO." # help disown -#: builtins.c:900 +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3737,7 +3575,7 @@ msgstr "" " sejam fornecidos." # help kill -#: builtins.c:919 +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3783,15 +3621,14 @@ msgstr "" " ocorra um erro." # help let -#: builtins.c:943 +#: builtins.c:942 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" +" 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" @@ -3869,35 +3706,30 @@ msgstr "" " let retorna 0." # help read -#: builtins.c:988 -#, fuzzy +#: builtins.c:987 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" +" 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" +" 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" +" 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" +" -e\tuse Readline to obtain the line in an interactive shell\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" +" -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" @@ -3915,19 +3747,15 @@ msgid "" " -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" +" 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 separa em campos.\n" "\n" " Lê uma linha da entrada padrão ou do descritor de arquivo FD, caso a\n" -" opção -u seja fornecida. A linha é separada em campos, na mesma forma " -"de\n" -" separação de palavras, e a primeira palavra é atribuída ao primeiro " -"NOME,\n" +" opção -u seja fornecida. A linha é separada em campos, na mesma forma de\n" +" separação de palavras, e a primeira palavra é atribuída ao primeiro NOME,\n" " o segundo ao segundo NOME e por aí vai, com qualquer palavras restantes\n" " atribuídas para o último NOME. Apenas os caracteres encontrados em $IFS\n" " são reconhecidos como delimitadores de palavras.\n" @@ -3943,13 +3771,11 @@ msgstr "" " -e usa Readline para obter a linha em um shell interativo\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 " -"número\n" +" por uma nova linha, mas respeita um delimitador se número\n" " de caracteres menor que NCHARS sejam lidos antes do\n" " delimitador\n" " -N NCHARS retorna apenas após ler exatamente NCHARS caracteres, a\n" -" menos que EOF (fim do arquivo) seja encontrado ou " -"`read'\n" +" menos que EOF (fim do arquivo) seja encontrado ou `read'\n" " esgote o tempo limite, ignorando qualquer delimitador\n" " -p CONFIRMAR mostra a string PROMPT sem remover nova linha antes de\n" " tentar ler\n" @@ -3958,26 +3784,21 @@ msgstr "" " -s não ecoa entrada vindo de um terminal\n" " -t TEMPO esgota-se o tempo limite e retorna falha, caso uma toda\n" " uma linha não seja lida em TEMPO segundos. O valor da\n" -" variável TMOUT é o tempo limite padrão. TEMPO pode ser " -"um\n" -" número fracionado. SE TEMPO for 0, `read' retorna " -"sucesso\n" +" variável TMOUT é o tempo limite padrão. TEMPO pode ser um\n" +" número fracionado. SE TEMPO for 0, `read' retorna sucesso\n" " apenas se a entrada estiver disponível no descritor de\n" -" arquivo especificado. O status de saída é maior que " -"128,\n" +" arquivo especificado. O status de saída é maior que 128,\n" " se o tempo limite for excedido\n" -" -u FD lê do descritor de arquivo FD, ao invés da entrada " -"padrão\n" +" -u FD lê do descritor de arquivo FD, ao invés da entrada padrão\n" " \n" " Status de saída:\n" " O código de retorno é zero, a menos que o EOF (fim do arquivo) seja\n" -" encontrado, `read' esgote o tempo limite (caso em que o código de " -"retorno\n" +" encontrado, `read' esgote o tempo limite (caso em que o código de retorno\n" " será 128), ocorra erro de atribuição de uma variável ou um descritor de\n" " arquivo inválido seja fornecido como argumento para -u." # help return -#: builtins.c:1035 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3999,7 +3820,7 @@ msgstr "" " script." # help set -#: builtins.c:1048 +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4042,8 +3863,7 @@ msgid "" " 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" +" 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" @@ -4067,8 +3887,7 @@ msgid "" " 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" +" -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" @@ -4084,21 +3903,18 @@ msgid "" " 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" +"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" +" -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" +" -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" @@ -4116,8 +3932,7 @@ msgstr "" " 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" +" permite mostrar comentários em comandos interativos\n" " keyword mesmo que -k\n" " monitor mesmo que -m\n" " noclobber mesmo que -C\n" @@ -4129,10 +3944,8 @@ msgstr "" " 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" +" 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" @@ -4140,44 +3953,33 @@ msgstr "" " 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" +" -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" +" -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" +" -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" +" -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" +" -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 e RETURN são herdadas por funções " -"do shell.\n" -" -- Atribui quaisquer argumentos restantes aos parâmetros " -"posicionais.\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" " limpos (unset).\n" -" - Atribui quaisquer argumentos restantes aos parâmetros " -"posicionais.\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" +" 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" @@ -4185,7 +3987,7 @@ msgstr "" " Retorna sucesso, a menos que uma opção inválida seja fornecida." # help unset -#: builtins.c:1133 +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4197,8 +3999,7 @@ msgid "" " -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" +" 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" @@ -4226,13 +4027,12 @@ msgstr "" " um NOME seja somente-leitura." # help export -#: builtins.c:1155 +#: builtins.c:1154 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" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4247,8 +4047,7 @@ msgstr "" "Define atributo de exportação para variáveis shell.\n" " \n" " Marca cada NOME para exportação automática para o ambiente dos comandos\n" -" executados subsequentemente. Se VALOR for fornecido, atribui VALOR " -"antes\n" +" executados subsequentemente. Se VALOR for fornecido, atribui VALOR antes\n" " de exportar.\n" " \n" " Opções:\n" @@ -4263,7 +4062,7 @@ msgstr "" " NOME seja inválido." # help readonly -#: builtins.c:1174 +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4303,7 +4102,7 @@ msgstr "" " NOME seja inválido." # help shift -#: builtins.c:1196 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4315,15 +4114,14 @@ msgid "" msgstr "" "Desloca parâmetros posicionais.\n" " \n" -" Renomeia os parâmetros posicionais $N+1,$N+2 ... até $1,$2 ... Se N " -"não\n" +" Renomeia os parâmetros posicionais $N+1,$N+2 ... até $1,$2 ... Se N não\n" " for fornecido, presume-se que ele seja 1.\n" " \n" " Status de saída:\n" " Retorna sucesso, a menos que N seja negativo ou maior que $#." # help source -#: builtins.c:1208 builtins.c:1223 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4348,7 +4146,7 @@ msgstr "" " ARQUIVO não puder ser lido." # help suspend -#: builtins.c:1239 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4374,7 +4172,7 @@ msgstr "" " ou ocorra um erro." # help test -#: builtins.c:1255 +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4408,8 +4206,7 @@ msgid "" " -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 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" @@ -4430,8 +4227,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4458,10 +4254,8 @@ msgid "" msgstr "" "Avalia expressão condicional.\n" " \n" -" Sai com um status de 0 (verdadeiro) ou 1 (falso) dependendo da " -"avaliação\n" -" de EXPR. As expressões podem ser unárias ou binárias. Expressões " -"unárias\n" +" Sai com um status de 0 (verdadeiro) ou 1 (falso) dependendo da avaliação\n" +" de EXPR. As expressões podem ser unárias ou binárias. Expressões unárias\n" " são normalmente usadas para examinar o status de um arquivo. Há\n" " operadores de strings e também há operadores de comparação numérica.\n" " \n" @@ -4475,8 +4269,7 @@ msgstr "" " -c ARQUIVO Verdadeiro, se arquivo for um caractere especial.\n" " -d ARQUIVO Verdadeiro, se arquivo for um diretório.\n" " -e ARQUIVO Verdadeiro, se arquivo existir.\n" -" -f ARQUIVO Verdadeiro, se arquivo existir e for um arquivo " -"normal.\n" +" -f ARQUIVO Verdadeiro, se arquivo existir e for um arquivo normal.\n" " -g ARQUIVO Verdadeiro, se arquivo for set-group-id.\n" " -h ARQUIVO Verdadeiro, se arquivo for um link simbólico.\n" " -L ARQUIVO Verdadeiro, se arquivo for um link simbólico.\n" @@ -4527,24 +4320,20 @@ msgstr "" " e for uma referência de nome.\n" " ! EXPR Verdadeiro, se a expressão EXPR for falsa.\n" " EXPR1 -a EXPR2 Verdadeiro, se ambas EXPR1 e EXPR2 forem verdadeiras.\n" -" EXPR1 -o EXPR2 Verdadeiro, se ao menos uma das expressões for " -"verdadeira.\n" +" EXPR1 -o EXPR2 Verdadeiro, se ao menos uma das expressões for verdadeira.\n" " \n" -" arg1 OP arg2 Testes aritméticos. OP é um dentre -eq, -ne, -lt, -" -"le,\n" +" arg1 OP arg2 Testes aritméticos. OP é um dentre -eq, -ne, -lt, -le,\n" " -gt, or -ge.\n" " \n" -" Operadores binários de aritmética retornam verdadeiro se ARG1 for " -"igual,\n" +" Operadores binários de aritmética retornam verdadeiro se ARG1 for igual,\n" " não-igual, menor-que, menor-ou-igual-a ou maior-ou-igual-a ARG2.\n" " \n" " Status de saída:\n" -" Retorna sucesso, se EXPR for avaliada como verdadeira; falha, se EXPR " -"for\n" +" Retorna sucesso, se EXPR for avaliada como verdadeira; falha, se EXPR for\n" " avaliada como falsa ou um argumento inválido for informado." # help [ -#: builtins.c:1337 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4557,12 +4346,11 @@ msgstr "" " argumento deve ser um `]' literal, para corresponder ao `[' que abriu." # help times -#: builtins.c:1346 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4577,12 +4365,11 @@ msgstr "" " Sempre com sucesso." # help trap -#: builtins.c:1358 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\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" @@ -4591,34 +4378,26 @@ msgid "" " 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" +" 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" +" 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 or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in 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." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" "Tratamento de sinais e outros eventos.\n" " \n" @@ -4658,7 +4437,7 @@ msgstr "" " uma opção inválida seja fornecida." # help type -#: builtins.c:1394 +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4684,8 +4463,7 @@ msgid "" " 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." +" Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" "Exibe informação sobre o tipo de comando.\n" " \n" @@ -4715,12 +4493,11 @@ msgstr "" " deles não for encontrado." # help ulimit -#: builtins.c:1425 +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\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" @@ -4810,7 +4587,7 @@ msgstr "" " ocorra um erro." # help umask -#: builtins.c:1475 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4846,24 +4623,19 @@ msgstr "" " inválida seja fornecida." # help wait -#: builtins.c:1495 -#, fuzzy +#: builtins.c:1494 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" +" 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" +" status is zero. If ID is a 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." @@ -4885,18 +4657,16 @@ msgstr "" " inválida for fornecida." # help wait -#: builtins.c:1519 +#: builtins.c:1515 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" +" 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" +" Returns the status of the last PID; fails if PID is invalid or an invalid\n" " option is given." msgstr "" "Espera por conclusão de processo e retorna o status de saída.\n" @@ -4911,7 +4681,7 @@ msgstr "" " inválida for fornecida." # help for -#: builtins.c:1534 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4927,15 +4697,14 @@ msgstr "" " \n" " O loop `for' executa uma sequência de comandos para cada membro em\n" " uma lista de itens. Se `in PALAVRAS ...;' não estiver presente, então\n" -" `in \"$@\"' é presumido. Para cada elemento em PALAVRAS, NOME é " -"definido\n" +" `in \"$@\"' é presumido. Para cada elemento em PALAVRAS, NOME é definido\n" " com aquele elemento e os COMANDOS são executados.\n" " \n" " Status de saída:\n" " Retorna o status do último comando executado." # help for (( (?) -#: builtins.c:1548 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4966,7 +4735,7 @@ msgstr "" " Retorna o status do último comando executado." # help select -#: builtins.c:1566 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5004,7 +4773,7 @@ msgstr "" " Retorna o status do último comando executado." # help time -#: builtins.c:1587 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5034,7 +4803,7 @@ msgstr "" " O status de retorno é o status retornado por LINHA-COMANDOS." # help case -#: builtins.c:1604 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5053,21 +4822,16 @@ msgstr "" " Retorna o status do último comando executado." # help if -#: builtins.c:1616 +#: builtins.c:1612 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" +" 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" +" `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" @@ -5088,7 +4852,7 @@ msgstr "" " Retorna o status do último comando executado." # help while -#: builtins.c:1633 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5107,7 +4871,7 @@ msgstr "" " Retorna o status do último comando executado." # help until -#: builtins.c:1645 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5126,7 +4890,7 @@ msgstr "" " Status de saída:\n" " Retorna o status do último comando executado." -#: builtins.c:1657 +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5149,13 +4913,12 @@ msgstr "" " O comando coproc retorna um status de saída de 0." # help function -#: builtins.c:1671 +#: builtins.c:1667 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" +" 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" @@ -5173,7 +4936,7 @@ msgstr "" " Retorna sucesso, a menos que NOME seja somente-leitura." # help -m { -#: builtins.c:1685 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -5191,7 +4954,7 @@ msgstr "" " Status de saída:\n" " Retorna o status do último comando executado." -#: builtins.c:1697 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -5217,7 +4980,7 @@ msgstr "" " Retorna o status de um trabalho resumido." # help '((' -#: builtins.c:1712 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5236,16 +4999,13 @@ msgstr "" " Retorna 1, se EXPRESSÃO for avaliada como 0; do contrário, retorna 0." # help '[' -#: builtins.c:1724 +#: builtins.c:1720 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" +" 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" @@ -5289,7 +5049,7 @@ msgstr "" " 0 ou 1 dependendo do valor de EXPRESSÃO." # help variables -#: builtins.c:1750 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5373,8 +5133,7 @@ msgstr "" " OSTYPE\t\t\tA versão do Unix no qual Bash está sendo executado.\n" " PATH\t\t\tUma lista separada por dois-pontos de diretórios para\n" " \t\t\tpesquisar ao se procurar por comandos.\n" -" PROMPT_COMMAND\tUm comando a ser executado antes de imprimir cada " -"prompt\n" +" PROMPT_COMMAND\tUm comando a ser executado antes de imprimir cada prompt\n" " \t\t\tprimário.\n" " PS1\t\t\t\tA string de prompt primário.\n" " PS2\t\t\t\tA string de prompt secundária.\n" @@ -5405,7 +5164,7 @@ msgstr "" " \t\t\t\thistórico.\n" # help pushd -#: builtins.c:1807 +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5465,7 +5224,7 @@ msgstr "" " a alteração de diretório falhar." # help popd -#: builtins.c:1841 +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5516,7 +5275,7 @@ msgstr "" " a alteração de diretório falhar." # help dirs -#: builtins.c:1871 +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5570,14 +5329,13 @@ msgstr "" " ocorrer um erro." # help shopt -#: builtins.c:1902 -#, fuzzy +#: builtins.c:1898 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" +" arguments, list all shell options with an indication of whether or not each\n" +" is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5608,7 +5366,7 @@ msgstr "" " opção inválida for fornecida ou NOME-OPÇÃO estiver desabilitado." # help printf -#: builtins.c:1923 +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5616,34 +5374,27 @@ msgid "" " -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" +" 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" +" 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" +" 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" +" %(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" +" 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" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" "Formata e imprime ARGUMENTOS sob controle de FORMATO.\n" @@ -5678,14 +5429,12 @@ msgstr "" " ocorra um erro de escrita ou atribuição." # help complete -#: builtins.c:1957 +#: builtins.c:1953 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" +" 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" @@ -5711,10 +5460,8 @@ msgstr "" " impressas em uma forma que permite-as serem usadas como entrada.\n" " \n" " Opções:\n" -" -p\timprime especificações existentes de completar em um formato " -"usável\n" -" -r\tremove uma especificação de completar para cada NOME ou, se " -"nenhum\n" +" -p\timprime especificações existentes de completar em um formato usável\n" +" -r\tremove uma especificação de completar para cada NOME ou, se nenhum\n" " \t\tNOME for fornecido, todas as especificações de completar\n" " -D\taplica as completações e ações como sendo o padrão para comandos\n" " \t\tsem qualquer especificação definida\n" @@ -5730,13 +5477,12 @@ msgstr "" " ocorra um erro." # help compgen -#: builtins.c:1985 +#: builtins.c:1981 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" +" completions. If the optional WORD argument is supplied, matches against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5753,16 +5499,13 @@ msgstr "" " ocorra um erro." # help compopt -#: builtins.c:2000 +#: builtins.c:1996 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" +" 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" @@ -5811,26 +5554,21 @@ msgstr "" " NOME não tem uma especificação de completação definida." # help mapfile -#: builtins.c:2030 +#: builtins.c:2026 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" +" 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" +" -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" +" -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" @@ -5843,13 +5581,11 @@ msgid "" " 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" +" 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" +" 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 array indexado.\n" @@ -5860,28 +5596,23 @@ msgstr "" " \n" " Opções:\n" " -d DELIM Usa DELIM para terminar linhas, ao invés de nova linha\n" -" -n NÚMERO Copia no máximo NÚMERO linhas. Se NÚMERO for 0, todas " -"as\n" +" -n NÚMERO Copia no máximo NÚMERO linhas. Se NÚMERO for 0, todas as\n" " linhas são copiadas\n" " -O ORIGEM Inicia atribuição de ARRAY no índice ORIGEM. O índice\n" " padrão é 0\n" " -s NÚMERO Descarta as primeiras NÚMERO linhas lidas\n" " -t Remove uma DELIM ao final para cada linha lida\n" " (padrão: nova linha)\n" -" -u FD Lê linhas do descritor de arquivos FD, ao invés da " -"entrada\n" +" -u FD Lê linhas do descritor de arquivos FD, ao invés da entrada\n" " padrão\n" -" -C CHAMADA Avalia CHAMADA a cada vez que QUANTIDADE linhas foram " -"lidas\n" -" -c QUANTIDADE Especifica o número de linhas lidas entre cada chamada " -"para\n" +" -C CHAMADA Avalia CHAMADA a cada vez que QUANTIDADE linhas foram lidas\n" +" -c QUANTIDADE Especifica o número de linhas lidas entre cada chamada para\n" " CHAMADA\n" " \n" " Argumentos:\n" " ARRAY Nome da variável array para usar para arquivos de dados\n" " \n" -" Se -C for fornecido sem -c, a quantidade padrão é 5000. Quando CHAMADA " -"é\n" +" Se -C for fornecido sem -c, a quantidade padrão é 5000. Quando CHAMADA é\n" " avaliada, é fornecido o índice para o próximo elemento da array ser\n" " atribuído e a linha para ser atribuída àquele elemento como argumentos\n" " adicionais\n" @@ -5894,7 +5625,7 @@ msgstr "" " somente leitura ou não for um array indexado." # help readarray -#: builtins.c:2066 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5963,12 +5694,9 @@ msgstr "" #~ " 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" +#~ " 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." @@ -5994,16 +5722,12 @@ msgstr "" #~ " -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" +#~ " 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" +#~ " 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" @@ -6024,10 +5748,8 @@ msgstr "" #~ " -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" +#~ " 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" @@ -6085,8 +5807,7 @@ msgstr "" #~ " 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" +#~ " allow comments to appear in interactive commands\n" #~ " keyword same as -k\n" #~ " monitor same as -m\n" #~ " noclobber same as -C\n" @@ -6097,12 +5818,9 @@ msgstr "" #~ " 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" +#~ " 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" @@ -6110,11 +5828,9 @@ msgstr "" #~ " 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" +#~ " -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" +#~ " 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" @@ -6137,32 +5853,26 @@ msgstr "" #~ " \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" +#~ " 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" +#~ "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" +#~ " 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" +#~ " -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" +#~ " -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" @@ -6179,8 +5889,7 @@ msgstr "" #~ " 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" +#~ " permite mostrar comentários em comandos interativos\n" #~ " keyword mesmo que -k\n" #~ " monitor mesmo que -m\n" #~ " noclobber mesmo que -C\n" @@ -6191,61 +5900,43 @@ msgstr "" #~ " 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" +#~ " 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" +#~ " -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" +#~ " -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" +#~ " -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" +#~ " -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" +#~ " -- 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" +#~ " - 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" +#~ " 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" @@ -6256,10 +5947,8 @@ msgstr "" #~ 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" +#~ " 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" @@ -6269,8 +5958,7 @@ 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" +#~ " 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" @@ -6393,8 +6081,7 @@ msgstr "" #~ msgstr "substituição de comando" #~ msgid "Can't reopen pipe to command substitution (fd %d): %s" -#~ msgstr "" -#~ "Impossível reabrir o `pipe' para substituição de comando (fd %d): %s" +#~ msgstr "Impossível reabrir o `pipe' para substituição de comando (fd %d): %s" #~ msgid "$%c: unbound variable" #~ msgstr "$%c: variável não associada" @@ -6478,8 +6165,7 @@ msgstr "" #~ msgstr "de aliases na forma `alias NOME=VALOR' na saída padrão." #~ msgid "Otherwise, an alias is defined for each NAME whose VALUE is given." -#~ msgstr "" -#~ "Ou então, um alias é definido para cada NOME cujo VALOR for fornecido." +#~ msgstr "Ou então, um alias é definido para cada NOME cujo VALOR for fornecido." #~ msgid "A trailing space in VALUE causes the next word to be checked for" #~ msgstr "Um espaço após VALOR faz a próxima palavra ser verificada para" @@ -6488,45 +6174,34 @@ msgstr "" #~ msgstr "substituição do alias quando o alias é expandido. Alias retorna" #~ msgid "true unless a NAME is given for which no alias has been defined." -#~ msgstr "" -#~ "verdadeiro, a não ser que seja fornecido um NOME sem alias definido." +#~ msgstr "verdadeiro, a não ser que seja fornecido um NOME sem alias definido." -#~ msgid "" -#~ "Remove NAMEs from the list of defined aliases. If the -a option is given," -#~ msgstr "" -#~ "Remove NOMEs da lista de aliases definidos. Se a opção -a for fornecida," +#~ msgid "Remove NAMEs from the list of defined aliases. If the -a option is given," +#~ msgstr "Remove NOMEs da lista de aliases definidos. Se a opção -a for fornecida," #~ msgid "then remove all alias definitions." #~ msgstr "então todas as definições de alias são removidas." #~ msgid "Bind a key sequence to a Readline function, or to a macro. The" -#~ msgstr "" -#~ "Víncula uma seqüência de teclas a uma função de leitura de linha, ou a uma" +#~ msgstr "Víncula uma seqüência de teclas a uma função de leitura de linha, ou a uma" #~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" -#~ msgstr "" -#~ "macro. A sintaxe é equivalente à encontrada em ~/.inputrc, mas deve ser" +#~ msgstr "macro. A sintaxe é equivalente à encontrada em ~/.inputrc, mas deve ser" -#~ msgid "" -#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." -#~ msgstr "" -#~ "passada como um único argumento: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgid "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgstr "passada como um único argumento: bind '\"\\C-x\\C-r\": re-read-init-file'." #~ msgid "Arguments we accept:" #~ msgstr "Argumentos permitidos:" -#~ msgid "" -#~ " -m keymap Use `keymap' as the keymap for the duration of this" -#~ msgstr "" -#~ " -m MAPA-TECLAS Usar `MAPA-TECLAS' como mapa das teclas pela duração" +#~ msgid " -m keymap Use `keymap' as the keymap for the duration of this" +#~ msgstr " -m MAPA-TECLAS Usar `MAPA-TECLAS' como mapa das teclas pela duração" #~ msgid " command. Acceptable keymap names are emacs," #~ msgstr " deste comando. Os nomes aceitos são emacs," -#~ msgid "" -#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," -#~ msgstr "" -#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgid " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgstr " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," #~ msgid " vi-command, and vi-insert." #~ msgstr " vi-command, and vi-insert." @@ -6537,10 +6212,8 @@ msgstr "" #~ msgid " -P List function names and bindings." #~ msgstr " -P Listar nomes e associações das funções." -#~ msgid "" -#~ " -p List functions and bindings in a form that can be" -#~ msgstr "" -#~ " -p Listar nomes e associações das funções de uma forma" +#~ msgid " -p List functions and bindings in a form that can be" +#~ msgstr " -p Listar nomes e associações das funções de uma forma" #~ msgid " reused as input." #~ msgstr " que pode ser reutilizada como entrada." @@ -6551,31 +6224,24 @@ msgstr "" #~ msgid " -f filename Read key bindings from FILENAME." #~ msgstr " -f ARQUIVO Ler os vínculos das teclas em ARQUIVO." -#~ msgid "" -#~ " -q function-name Query about which keys invoke the named function." +#~ msgid " -q function-name Query about which keys invoke the named function." #~ msgstr " -q NOME-FUNÇÃO Consultar quais teclas chamam esta função." #~ msgid " -V List variable names and values" #~ msgstr " -V Listar os nomes e os valores das variáveis." -#~ msgid "" -#~ " -v List variable names and values in a form that can" -#~ msgstr "" -#~ " -v Listar os nomes e os valores das variáveis de uma" +#~ msgid " -v List variable names and values in a form that can" +#~ msgstr " -v Listar os nomes e os valores das variáveis de uma" #~ msgid " be reused as input." #~ msgstr " forma que pode ser reutilizada como entrada." -#~ msgid "" -#~ " -S List key sequences that invoke macros and their " -#~ "values" +#~ msgid " -S List key sequences that invoke macros and their values" #~ msgstr "" #~ " -S Listar as seqüências de teclas que chamam macros\n" #~ " e seus valores." -#~ msgid "" -#~ " -s List key sequences that invoke macros and their " -#~ "values in" +#~ msgid " -s List key sequences that invoke macros and their values in" #~ msgstr " -s Listar seqüências de teclas que chamam macros" #~ msgid " a form that can be reused as input." @@ -6596,8 +6262,7 @@ msgstr "" #~ msgstr "Se N for especificado, prossegue no N-ésimo laço envolvente." #~ msgid "Run a shell builtin. This is useful when you wish to rename a" -#~ msgstr "" -#~ "Executa um comando interno do shell. Útil quando desejamos substituir" +#~ msgstr "Executa um comando interno do shell. Útil quando desejamos substituir" #~ msgid "shell builtin to be a function, but need the functionality of the" #~ msgstr "um comando interno do shell por uma função, mas necessitamos da" @@ -6612,12 +6277,10 @@ msgstr "" #~ msgstr "para DIR. A variável $CDPATH define o caminho de procura para" #~ msgid "the directory containing DIR. Alternative directory names in CDPATH" -#~ msgstr "" -#~ "o diretório que contém DIR. Nomes de diretórios alternativos em CDPATH" +#~ msgstr "o diretório que contém DIR. Nomes de diretórios alternativos em CDPATH" #~ msgid "are separated by a colon (:). A null directory name is the same as" -#~ msgstr "" -#~ "são separados por dois pontos (:). Um nome de diretório nulo é o mesmo" +#~ msgstr "são separados por dois pontos (:). Um nome de diretório nulo é o mesmo" #~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," #~ msgstr "que o diretório atual, i.e. `.'. Se DIR inicia com uma barra (/)," @@ -6626,20 +6289,15 @@ msgstr "" #~ msgstr "então $CDPATH não é usado. Se o diretório não for encontrado, e a" #~ msgid "shell option `cdable_vars' is set, then try the word as a variable" -#~ msgstr "" -#~ "opção `cdable_vars' estiver definida, tentar usar DIR como um nome de" +#~ msgstr "opção `cdable_vars' estiver definida, tentar usar DIR como um nome de" #~ msgid "name. If that variable has a value, then cd to the value of that" -#~ msgstr "" -#~ "variável. Se esta variável tiver valor, então `cd' para o valor desta" +#~ msgstr "variável. Se esta variável tiver valor, então `cd' para o valor desta" -#~ msgid "" -#~ "variable. The -P option says to use the physical directory structure" -#~ msgstr "" -#~ "variável. A opção -P indica para usar a estrutura física do diretório" +#~ msgid "variable. The -P option says to use the physical directory structure" +#~ msgstr "variável. A opção -P indica para usar a estrutura física do diretório" -#~ msgid "" -#~ "instead of following symbolic links; the -L option forces symbolic links" +#~ msgid "instead of following symbolic links; the -L option forces symbolic links" #~ msgstr "em vez de seguir os vínculos simbólicos; a opção -L força seguir os" #~ msgid "to be followed." @@ -6654,27 +6312,19 @@ msgstr "" #~ msgid "makes pwd follow symbolic links." #~ msgstr "com que `pwd' siga os vínculos simbólicos." -#~ msgid "" -#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" -#~ msgstr "" -#~ "Executa COMANDO com ARGs ignorando as funções da shell. Ex: Havendo" +#~ msgid "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +#~ msgstr "Executa COMANDO com ARGs ignorando as funções da shell. Ex: Havendo" #~ msgid "function called `ls', and you wish to call the command `ls', you can" -#~ msgstr "" -#~ "uma função `ls', e se for necessário executar o comando `ls', executa-se" +#~ msgstr "uma função `ls', e se for necessário executar o comando `ls', executa-se" -#~ msgid "" -#~ "say \"command ls\". If the -p option is given, a default value is used" -#~ msgstr "" -#~ "\"command ls\". Se a opção -p for fornecida, o valor padrão é utilizado" +#~ msgid "say \"command ls\". If the -p option is given, a default value is used" +#~ msgstr "\"command ls\". Se a opção -p for fornecida, o valor padrão é utilizado" -#~ msgid "" -#~ "for PATH that is guaranteed to find all of the standard utilities. If" -#~ msgstr "" -#~ "para PATH, garantindo-se o encontro de todos os utilitários padrão. Se" +#~ msgid "for PATH that is guaranteed to find all of the standard utilities. If" +#~ msgstr "para PATH, garantindo-se o encontro de todos os utilitários padrão. Se" -#~ msgid "" -#~ "the -V or -v option is given, a string is printed describing COMMAND." +#~ msgid "the -V or -v option is given, a string is printed describing COMMAND." #~ msgstr "a opção -V ou -v for fornecida, é exibida a descrição do COMANDO." #~ msgid "The -V option produces a more verbose description." @@ -6725,8 +6375,7 @@ msgstr "" #~ msgid "name only." #~ msgstr "somente." -#~ msgid "" -#~ "Using `+' instead of `-' turns off the given attribute instead. When" +#~ msgid "Using `+' instead of `-' turns off the given attribute instead. When" #~ msgstr "Usando `+' em vez de `-' faz o atributo ser desabilitado. Quando" #~ msgid "used in a function, makes NAMEs local, as with the `local' command." @@ -6745,8 +6394,7 @@ msgstr "" #~ msgstr "Exibe ARGs. Se -n for fornecido, o caracter final de nova linha é" #~ msgid "suppressed. If the -e option is given, interpretation of the" -#~ msgstr "" -#~ "suprimido. Se a opção -e for fornecida, a interpretação dos seguintes" +#~ msgstr "suprimido. Se a opção -e for fornecida, a interpretação dos seguintes" #~ msgid "following backslash-escaped characters is turned on:" #~ msgstr "caracteres após a contrabarra é ativada:" @@ -6784,74 +6432,56 @@ msgstr "" #~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." #~ msgstr "\t\\num\to caracter com código ASCII igual a NUM (octal)." -#~ msgid "" -#~ "You can explicitly turn off the interpretation of the above characters" -#~ msgstr "" -#~ "Pode-se explicitamente desabilitar a interpretação dos caracteres acima" +#~ msgid "You can explicitly turn off the interpretation of the above characters" +#~ msgstr "Pode-se explicitamente desabilitar a interpretação dos caracteres acima" #~ msgid "with the -E option." #~ msgstr "através da opção -E." -#~ msgid "" -#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." -#~ msgstr "" -#~ "Exibe ARGS. Se -n for fornecido, o caracter final de nova linha é " -#~ "suprimido." +#~ msgid "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "Exibe ARGS. Se -n for fornecido, o caracter final de nova linha é suprimido." #~ msgid "Enable and disable builtin shell commands. This allows" -#~ msgstr "" -#~ "Habilita e desabilita os comandos internos do shell, permitindo usar" +#~ msgstr "Habilita e desabilita os comandos internos do shell, permitindo usar" #~ msgid "you to use a disk command which has the same name as a shell" -#~ msgstr "" -#~ "um comando de disco que tenha o mesmo nome do comando interno do shell." +#~ msgstr "um comando de disco que tenha o mesmo nome do comando interno do shell." #~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" -#~ msgstr "" -#~ "Se -n for especificado, os NOMEs são desabilitados, senão os nomes são" +#~ msgstr "Se -n for especificado, os NOMEs são desabilitados, senão os nomes são" #~ msgid "NAMEs are enabled. For example, to use the `test' found on your" -#~ msgstr "" -#~ "habilitados. Por exemplo, para usar `test' encontrado pelo PATH em vez" +#~ msgstr "habilitados. Por exemplo, para usar `test' encontrado pelo PATH em vez" #~ msgid "path instead of the shell builtin version, type `enable -n test'." -#~ msgstr "" -#~ "da versão interna do comando, digite `enable -n test'. Em sistemas que" +#~ msgstr "da versão interna do comando, digite `enable -n test'. Em sistemas que" #~ msgid "On systems supporting dynamic loading, the -f option may be used" -#~ msgstr "" -#~ "suportam carregamento dinâmico, pode-se usar a opção -f para carregar" +#~ msgstr "suportam carregamento dinâmico, pode-se usar a opção -f para carregar" #~ msgid "to load new builtins from the shared object FILENAME. The -d" -#~ msgstr "" -#~ "novos comandos internos do objeto compartilhado ARQUIVO. A opção -d" +#~ msgstr "novos comandos internos do objeto compartilhado ARQUIVO. A opção -d" #~ msgid "option will delete a builtin previously loaded with -f. If no" -#~ msgstr "" -#~ "elimina os comandos internos previamente carregados com -f. Se nenhum" +#~ msgstr "elimina os comandos internos previamente carregados com -f. Se nenhum" #~ msgid "non-option names are given, or the -p option is supplied, a list" -#~ msgstr "" -#~ "nome for fornecido, ou se a opção -p for fornecida, uma lista de comandos" +#~ msgstr "nome for fornecido, ou se a opção -p for fornecida, uma lista de comandos" #~ msgid "of builtins is printed. The -a option means to print every builtin" -#~ msgstr "" -#~ "internos é exibida. A opção -a faz com que todos os comandos internos" +#~ msgstr "internos é exibida. A opção -a faz com que todos os comandos internos" #~ msgid "with an indication of whether or not it is enabled. The -s option" #~ msgstr "sejam exibidos indicando se estão habilitados ou não. A opção -s" #~ msgid "restricts the output to the Posix.2 `special' builtins. The -n" -#~ msgstr "" -#~ "restringe a saída aos comandos internos `especiais' Posix.2. A opção" +#~ msgstr "restringe a saída aos comandos internos `especiais' Posix.2. A opção" #~ msgid "option displays a list of all disabled builtins." #~ msgstr "-n exibe a lista de todos os comandos internos desabilitados." -#~ msgid "" -#~ "Read ARGs as input to the shell and execute the resulting command(s)." -#~ msgstr "" -#~ "Ler ARGs como entrada do shell e executar o(s) comando(s) resultante(s)." +#~ msgid "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "Ler ARGs como entrada do shell e executar o(s) comando(s) resultante(s)." #~ msgid "Getopts is used by shell procedures to parse positional parameters." #~ msgstr "" @@ -6880,15 +6510,13 @@ msgstr "" #~ msgstr "shell OPTIND. OPTIND é inicializado com 1 cada vez que o script" #~ msgid "a shell script is invoked. When an option requires an argument," -#~ msgstr "" -#~ "do shell é chamado. Quando uma opção requer um argumento, `getopts'" +#~ msgstr "do shell é chamado. Quando uma opção requer um argumento, `getopts'" #~ msgid "getopts places that argument into the shell variable OPTARG." #~ msgstr "coloca este argumento dentro da variável do shell OPTARG." #~ msgid "getopts reports errors in one of two ways. If the first character" -#~ msgstr "" -#~ "`getopts' informa os erros de duas maneiras. Se o primeiro caracter de" +#~ msgstr "`getopts' informa os erros de duas maneiras. Se o primeiro caracter de" #~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" #~ msgstr "OPÇÕES for dois pontos, `getopts' usa o modo silencioso. Neste" @@ -6900,24 +6528,19 @@ msgstr "" #~ msgstr "encontrada, `getopts' coloca o caracter da opção em OPTARG. Se um" #~ msgid "required argument is not found, getopts places a ':' into NAME and" -#~ msgstr "" -#~ "argumento requerido não for encontrado, `getopts' coloca ':' em NOME e" +#~ msgstr "argumento requerido não for encontrado, `getopts' coloca ':' em NOME e" #~ msgid "sets OPTARG to the option character found. If getopts is not in" -#~ msgstr "" -#~ "atribui a OPTARG o caracter de opção encontrado. Se `getopts' não está em" +#~ msgstr "atribui a OPTARG o caracter de opção encontrado. Se `getopts' não está em" #~ msgid "silent mode, and an illegal option is seen, getopts places '?' into" -#~ msgstr "" -#~ "modo silencioso, e uma opção ilegal é encontrada, `getopts' coloca '?' em" +#~ msgstr "modo silencioso, e uma opção ilegal é encontrada, `getopts' coloca '?' em" #~ msgid "NAME and unsets OPTARG. If a required option is not found, a '?'" -#~ msgstr "" -#~ "NOME e desativa OPTARG. Se uma opção requerida não é encontrada, uma '?'" +#~ msgstr "NOME e desativa OPTARG. Se uma opção requerida não é encontrada, uma '?'" #~ msgid "is placed in NAME, OPTARG is unset, and a diagnostic message is" -#~ msgstr "" -#~ "é colocada em NOME, OPTARG é desativado, e uma mensagem de diagnóstico é" +#~ msgstr "é colocada em NOME, OPTARG é desativado, e uma mensagem de diagnóstico é" #~ msgid "printed." #~ msgstr "exibida." @@ -6932,19 +6555,16 @@ msgstr "" #~ msgstr "OPTSTRING não seja dois pontos. OPTERR tem o valor 1 por padrão." #~ msgid "Getopts normally parses the positional parameters ($0 - $9), but if" -#~ msgstr "" -#~ "`getopts' normalmente faz a leitura dos parãmetros posicionais ($0 - $9)," +#~ msgstr "`getopts' normalmente faz a leitura dos parãmetros posicionais ($0 - $9)," #~ msgid "more arguments are given, they are parsed instead." #~ msgstr "mas, se mais argumentos forem fornecidos, então estes são lidos." #~ msgid "Exec FILE, replacing this shell with the specified program." -#~ msgstr "" -#~ "Executa ARQUIVO, substituindo esta shell pelo programa especificado." +#~ msgstr "Executa ARQUIVO, substituindo esta shell pelo programa especificado." #~ msgid "If FILE is not specified, the redirections take effect in this" -#~ msgstr "" -#~ "Se ARQUIVO não for especificado, os redirecionamentos são efetivados" +#~ msgstr "Se ARQUIVO não for especificado, os redirecionamentos são efetivados" #~ msgid "shell. If the first argument is `-l', then place a dash in the" #~ msgstr "neste shell. Se o primeiro argumento for `-l', coloca um hífen no" @@ -6962,8 +6582,7 @@ msgstr "" #~ msgstr "Se o arquivo não puder ser executado e o shell não for interativa," #~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" -#~ msgstr "" -#~ "então o shell termina, a menos que a variável \"no_exit_on_failed_exec\"" +#~ msgstr "então o shell termina, a menos que a variável \"no_exit_on_failed_exec\"" #~ msgid "is set." #~ msgstr "esteja inicializada." @@ -6971,8 +6590,7 @@ msgstr "" #~ msgid "is that of the last command executed." #~ msgstr "de saída é igual ao do último comando executado." -#~ msgid "" -#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +#~ msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a" #~ msgstr "PRIMEIRO e ÚLTIMO podem ser números especificando o intervalo, ou" #~ msgid "string, which means the most recent command beginning with that" @@ -6981,16 +6599,11 @@ msgstr "" #~ msgid "string." #~ msgstr "mais recente começado por estes caracteres." -#~ msgid "" -#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," -#~ msgstr "" -#~ " -e EDITOR seleciona qual editor usar. O padrão é FCEDIT, depois " -#~ "EDITOR," +#~ msgid " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +#~ msgstr " -e EDITOR seleciona qual editor usar. O padrão é FCEDIT, depois EDITOR," -#~ msgid "" -#~ " then the editor which corresponds to the current readline editing" -#~ msgstr "" -#~ " depois o editor correspondente ao modo de edição atual da leitura" +#~ msgid " then the editor which corresponds to the current readline editing" +#~ msgstr " depois o editor correspondente ao modo de edição atual da leitura" #~ msgid " mode, then vi." #~ msgstr " de linha, e depois o vi." @@ -7001,40 +6614,32 @@ msgstr "" #~ msgid " -n means no line numbers listed." #~ msgstr " -n indica para não listar os números das linhas." -#~ msgid "" -#~ " -r means reverse the order of the lines (making it newest listed " -#~ "first)." -#~ msgstr "" -#~ " -r faz reverter a ordem das linhas (a última torna-se a primeira)." +#~ msgid " -r means reverse the order of the lines (making it newest listed first)." +#~ msgstr " -r faz reverter a ordem das linhas (a última torna-se a primeira)." #~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" -#~ msgstr "" -#~ "No formato `fc -s [ANTIGO=NOVO ...] [COMANDO]', o comando é executado" +#~ msgstr "No formato `fc -s [ANTIGO=NOVO ...] [COMANDO]', o comando é executado" #~ msgid "re-executed after the substitution OLD=NEW is performed." #~ msgstr "novamente após a substituição de ANTIGO por NOVO ser realizada." #~ msgid "A useful alias to use with this is r='fc -s', so that typing `r cc'" -#~ msgstr "" -#~ "Um alias útil a ser usado é r='fc -s' para que, ao se digitar `r cc'," +#~ msgstr "Um alias útil a ser usado é r='fc -s' para que, ao se digitar `r cc'," #~ msgid "runs the last command beginning with `cc' and typing `r' re-executes" #~ msgstr "seja executado o último comando começado por `cc' e, ao se digitar" #~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If" -#~ msgstr "" -#~ "Colocar JOB-ESPECIFICADO no primeiro plano, e torná-lo o trabalho atual." +#~ msgstr "Colocar JOB-ESPECIFICADO no primeiro plano, e torná-lo o trabalho atual." #~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" -#~ msgstr "" -#~ "Se JOB-ESPECIFICADO não estiver presente, a noção do shell do trabalho" +#~ msgstr "Se JOB-ESPECIFICADO não estiver presente, a noção do shell do trabalho" #~ msgid "used." #~ msgstr "atual é utilizada." #~ msgid "Place JOB_SPEC in the background, as if it had been started with" -#~ msgstr "" -#~ "Colocar JOB-ESPECIFICADO no segundo plano, como se tivesse sido ativado" +#~ msgstr "Colocar JOB-ESPECIFICADO no segundo plano, como se tivesse sido ativado" #~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" #~ msgstr "com `&'. Se JOB-ESPECIFICADO não estiver presente, a noção do shell" @@ -7043,22 +6648,18 @@ msgstr "" #~ msgstr "do trabalho atual é utilizada." #~ msgid "For each NAME, the full pathname of the command is determined and" -#~ msgstr "" -#~ "Para cada NOME, o caminho completo do comando é determinado e lembrado." +#~ msgstr "Para cada NOME, o caminho completo do comando é determinado e lembrado." #~ msgid "remembered. If the -p option is supplied, PATHNAME is used as the" -#~ msgstr "" -#~ "Se a opção -p for fornecida, CAMINHO é utilizado como o caminho completo" +#~ msgstr "Se a opção -p for fornecida, CAMINHO é utilizado como o caminho completo" #~ msgid "full pathname of NAME, and no path search is performed. The -r" #~ msgstr "para NOME, e nenhuma procura de caminho é realizada. A opção -r" #~ msgid "option causes the shell to forget all remembered locations. If no" -#~ msgstr "" -#~ "faz com que a shell esqueça todas as localizações lembradas. Sem nenhum" +#~ msgstr "faz com que a shell esqueça todas as localizações lembradas. Sem nenhum" -#~ msgid "" -#~ "arguments are given, information about remembered commands is displayed." +#~ msgid "arguments are given, information about remembered commands is displayed." #~ msgstr "argumento, as informações sobre os comandos lembrados são exibidas." #~ msgid "Display helpful information about builtin commands. If PATTERN is" @@ -7068,12 +6669,10 @@ msgstr "" #~ msgstr "especificado, fornece ajuda detalhada para todos os comandos que" #~ msgid "otherwise a list of the builtins is printed." -#~ msgstr "" -#~ "correspondem ao PADRÃO, senão a lista dos comandos internos é exibida." +#~ msgstr "correspondem ao PADRÃO, senão a lista dos comandos internos é exibida." #~ msgid "Display the history list with line numbers. Lines listed with" -#~ msgstr "" -#~ "Exibe a lista histórica com os números das linhas. Linhas contendo um" +#~ msgstr "Exibe a lista histórica com os números das linhas. Linhas contendo um" #~ msgid "with a `*' have been modified. Argument of N says to list only" #~ msgstr "`*' foram modificadas. O argumento N faz listar somente as últimas" @@ -7081,19 +6680,14 @@ msgstr "" #~ msgid "the last N lines. The -c option causes the history list to be" #~ msgstr "N linhas. A opção -c faz com que a lista histórica seja apagada" -#~ msgid "" -#~ "cleared by deleting all of the entries. The `-w' option writes out the" -#~ msgstr "" -#~ "removendo todas as entradas. A opção `-w' escreve o histórico atual no" +#~ msgid "cleared by deleting all of the entries. The `-w' option writes out the" +#~ msgstr "removendo todas as entradas. A opção `-w' escreve o histórico atual no" -#~ msgid "" -#~ "current history to the history file; `-r' means to read the file and" -#~ msgstr "" -#~ "arquivo de histórico; A opção `-r' significa ler o arquivo e apensar seu" +#~ msgid "current history to the history file; `-r' means to read the file and" +#~ msgstr "arquivo de histórico; A opção `-r' significa ler o arquivo e apensar seu" #~ msgid "append the contents to the history list instead. `-a' means" -#~ msgstr "" -#~ "conteúdo à lista histórica. A opção `-a' significa apensar as linhas de" +#~ msgstr "conteúdo à lista histórica. A opção `-a' significa apensar as linhas de" #~ msgid "to append history lines from this session to the history file." #~ msgstr "histórico desta sessão ao arquivo de histórico." @@ -7102,113 +6696,82 @@ msgstr "" #~ msgstr "A opção `-n' faz ler todas as linhas de histórico ainda não lidas" #~ msgid "from the history file and append them to the history list. If" -#~ msgstr "" -#~ "do arquivo histórico, e apensá-las à lista de histórico. Se ARQUIVO" +#~ msgstr "do arquivo histórico, e apensá-las à lista de histórico. Se ARQUIVO" #~ msgid "FILENAME is given, then that is used as the history file else" #~ msgstr "for fornecido, então este é usado como arquivo de histórico, senão" #~ msgid "if $HISTFILE has a value, that is used, else ~/.bash_history." -#~ msgstr "" -#~ "se $HISTFILE possui valor, este é usado, senão ~/.bash_history. Se a" +#~ msgstr "se $HISTFILE possui valor, este é usado, senão ~/.bash_history. Se a" #~ msgid "If the -s option is supplied, the non-option ARGs are appended to" -#~ msgstr "" -#~ "opção -s for fornecida, os ARGs, que não forem opções, são apensados à" +#~ msgstr "opção -s for fornecida, os ARGs, que não forem opções, são apensados à" #~ msgid "the history list as a single entry. The -p option means to perform" -#~ msgstr "" -#~ "lista histórica como uma única entrada. A opção -p significa realizar a" +#~ msgstr "lista histórica como uma única entrada. A opção -p significa realizar a" -#~ msgid "" -#~ "history expansion on each ARG and display the result, without storing" -#~ msgstr "" -#~ "expansão da história em cada ARG e exibir o resultado, sem armazenar" +#~ msgid "history expansion on each ARG and display the result, without storing" +#~ msgstr "expansão da história em cada ARG e exibir o resultado, sem armazenar" #~ msgid "anything in the history list." #~ msgstr "nada na lista de histórico." #~ msgid "Lists the active jobs. The -l option lists process id's in addition" -#~ msgstr "" -#~ "Lista os trabalhos ativos. A opção -l lista os ID's dos processos além" +#~ msgstr "Lista os trabalhos ativos. A opção -l lista os ID's dos processos além" #~ msgid "to the normal information; the -p option lists process id's only." -#~ msgstr "" -#~ "das informações usuais; a opção -p lista somente os ID's dos processos." +#~ msgstr "das informações usuais; a opção -p lista somente os ID's dos processos." -#~ msgid "" -#~ "If -n is given, only processes that have changed status since the last" -#~ msgstr "" -#~ "Se -n for fornecido, somente os processos que mudaram de status desde a" +#~ msgid "If -n is given, only processes that have changed status since the last" +#~ msgstr "Se -n for fornecido, somente os processos que mudaram de status desde a" -#~ msgid "" -#~ "notification are printed. JOBSPEC restricts output to that job. The" -#~ msgstr "" -#~ "última notificação são exibidos. JOB-ESPECIFICADO restringe a saída a " -#~ "este" +#~ msgid "notification are printed. JOBSPEC restricts output to that job. The" +#~ msgstr "última notificação são exibidos. JOB-ESPECIFICADO restringe a saída a este" #~ msgid "-r and -s options restrict output to running and stopped jobs only," -#~ msgstr "" -#~ "trabalho. As opções -r e -s restringem a saída apenas aos trabalhos" +#~ msgstr "trabalho. As opções -r e -s restringem a saída apenas aos trabalhos" #~ msgid "respectively. Without options, the status of all active jobs is" -#~ msgstr "" -#~ "executando e parados, respectivamente. Sem opções, o status de todos os" +#~ msgstr "executando e parados, respectivamente. Sem opções, o status de todos os" -#~ msgid "" -#~ "printed. If -x is given, COMMAND is run after all job specifications" -#~ msgstr "" -#~ "trabalhos ativos são exibidos. Se -x for fornecido, COMANDO é executado" +#~ msgid "printed. If -x is given, COMMAND is run after all job specifications" +#~ msgstr "trabalhos ativos são exibidos. Se -x for fornecido, COMANDO é executado" -#~ msgid "" -#~ "that appear in ARGS have been replaced with the process ID of that job's" -#~ msgstr "" -#~ "após todas as especificações de trabalho que aparecem em ARGS terem sido" +#~ msgid "that appear in ARGS have been replaced with the process ID of that job's" +#~ msgstr "após todas as especificações de trabalho que aparecem em ARGS terem sido" #~ msgid "process group leader." #~ msgstr "substituídas pelo ID do processo líder deste grupo de processos." #~ msgid "Removes each JOBSPEC argument from the table of active jobs." -#~ msgstr "" -#~ "Remove cada argumento JOB-ESPECIFICADO da tabela de trabalhos ativos." +#~ msgstr "Remove cada argumento JOB-ESPECIFICADO da tabela de trabalhos ativos." #~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" -#~ msgstr "" -#~ "Envia ao processo identificado pelo PID (ou JOB) o sinal SIGSPEC. Se" +#~ msgstr "Envia ao processo identificado pelo PID (ou JOB) o sinal SIGSPEC. Se" -#~ msgid "" -#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" -#~ msgstr "" -#~ "SIGSPEC não estiver presente, então SIGTERM é assumido. A opção `-l'" +#~ msgid "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +#~ msgstr "SIGSPEC não estiver presente, então SIGTERM é assumido. A opção `-l'" #~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" -#~ msgstr "" -#~ "lista os nomes dos sinais; havendo argumentos após `-l', são assumidos" +#~ msgstr "lista os nomes dos sinais; havendo argumentos após `-l', são assumidos" #~ msgid "be signal numbers for which names should be listed. Kill is a shell" -#~ msgstr "" -#~ "como sendo os números dos sinais cujos nomes devem ser exibidos. Kill" +#~ msgstr "como sendo os números dos sinais cujos nomes devem ser exibidos. Kill" #~ msgid "builtin for two reasons: it allows job IDs to be used instead of" -#~ msgstr "" -#~ "é um comando interno por duas razões: permite o uso do ID do trabalho em" +#~ msgstr "é um comando interno por duas razões: permite o uso do ID do trabalho em" #~ msgid "process IDs, and, if you have reached the limit on processes that" -#~ msgstr "" -#~ "vez do ID do processo e, caso tenha sido atingido o limite de processos " -#~ "que" +#~ msgstr "vez do ID do processo e, caso tenha sido atingido o limite de processos que" -#~ msgid "" -#~ "you can create, you don't have to start a process to kill another one." -#~ msgstr "" -#~ "podem ser criados, não é necessário um novo processo para remover outro." +#~ msgid "you can create, you don't have to start a process to kill another one." +#~ msgstr "podem ser criados, não é necessário um novo processo para remover outro." #~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" #~ msgstr "Cada ARG é uma expressão aritmética a ser avaliada. A avaliação é" #~ msgid "is done in long integers with no check for overflow, though division" -#~ msgstr "" -#~ "feita usando inteiros longos sem verificar estouro, embora a divisão" +#~ msgstr "feita usando inteiros longos sem verificar estouro, embora a divisão" #~ msgid "by 0 is trapped and flagged as an error. The following list of" #~ msgstr "por 0 seja capturada e indicada como erro. A lista abaixo está" @@ -7280,8 +6843,7 @@ msgstr "" #~ msgstr "ativo para ser usada em uma expressão." #~ msgid "Operators are evaluated in order of precedence. Sub-expressions in" -#~ msgstr "" -#~ "Os operadores são avaliados em ordem de precedência. Sub-expressões" +#~ msgstr "Os operadores são avaliados em ordem de precedência. Sub-expressões" #~ msgid "parentheses are evaluated first and may override the precedence" #~ msgstr "entre parênteses são avaliadas primeiro e podem prevalecer sobre as" @@ -7298,76 +6860,53 @@ msgstr "" #~ msgid "One line is read from the standard input, and the first word is" #~ msgstr "Uma linha é lida a partir da entrada padrão, e a primeira palavra é" -#~ msgid "" -#~ "assigned to the first NAME, the second word to the second NAME, and so" -#~ msgstr "" -#~ "atribuída ao primeiro NOME, a segunda ao segundo NOME, e assim por diante," +#~ msgid "assigned to the first NAME, the second word to the second NAME, and so" +#~ msgstr "atribuída ao primeiro NOME, a segunda ao segundo NOME, e assim por diante," -#~ msgid "" -#~ "on, with leftover words assigned to the last NAME. Only the characters" -#~ msgstr "" -#~ "com as palavras restantes atribuídas ao último NOME. Somente os " -#~ "caracteres" +#~ msgid "on, with leftover words assigned to the last NAME. Only the characters" +#~ msgstr "com as palavras restantes atribuídas ao último NOME. Somente os caracteres" #~ msgid "found in $IFS are recognized as word delimiters. The return code is" -#~ msgstr "" -#~ "encontrados em $IFS são reconhecidos como delimitadores. O código de " -#~ "retorno" +#~ msgstr "encontrados em $IFS são reconhecidos como delimitadores. O código de retorno" -#~ msgid "" -#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" -#~ msgstr "" -#~ "é zero, a menos que EOF seja encontrado. Se nenhum NOME for fornecido," +#~ msgid "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" +#~ msgstr "é zero, a menos que EOF seja encontrado. Se nenhum NOME for fornecido," -#~ msgid "" -#~ "line read is stored in the REPLY variable. If the -r option is given," -#~ msgstr "" -#~ "a linha lida é armazenada na variável REPLY. Se a opção -r for fornecida," +#~ msgid "line read is stored in the REPLY variable. If the -r option is given," +#~ msgstr "a linha lida é armazenada na variável REPLY. Se a opção -r for fornecida," #~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" -#~ msgstr "" -#~ "significa entrada `textual', desabilitando a interpretação da contrabarra." +#~ msgstr "significa entrada `textual', desabilitando a interpretação da contrabarra." #~ msgid "the `-p' option is supplied, the string supplied as an argument is" -#~ msgstr "" -#~ "Se a opção `-p' for fornecida a MENSAGEM fornecida como argumento é " -#~ "exibida," +#~ msgstr "Se a opção `-p' for fornecida a MENSAGEM fornecida como argumento é exibida," -#~ msgid "" -#~ "output without a trailing newline before attempting to read. If -a is" -#~ msgstr "" -#~ "sem o caracter de nova linha, antes de efetuar a leitura. Se a opção -a" +#~ msgid "output without a trailing newline before attempting to read. If -a is" +#~ msgstr "sem o caracter de nova linha, antes de efetuar a leitura. Se a opção -a" -#~ msgid "" -#~ "supplied, the words read are assigned to sequential indices of ARRAY," -#~ msgstr "" -#~ "for fornecida, as palavras lidas são atribuídas aos índices seqüenciais" +#~ msgid "supplied, the words read are assigned to sequential indices of ARRAY," +#~ msgstr "for fornecida, as palavras lidas são atribuídas aos índices seqüenciais" #~ msgid "starting at zero. If -e is supplied and the shell is interactive," -#~ msgstr "" -#~ "do ARRAY, começando por zero. Se a opção -e for fornecida, e a shell for" +#~ msgstr "do ARRAY, começando por zero. Se a opção -e for fornecida, e a shell for" #~ msgid "readline is used to obtain the line." #~ msgstr "interativa, `readline' é utilizado para ler a linha." -#~ msgid "" -#~ "Causes a function to exit with the return value specified by N. If N" +#~ msgid "Causes a function to exit with the return value specified by N. If N" #~ msgstr "Faz a função terminar com o valor de retorno especificado por N." #~ msgid "is omitted, the return status is that of the last command." #~ msgstr "Se N for omitido, retorna o status do último comando executado." #~ msgid " -a Mark variables which are modified or created for export." -#~ msgstr "" -#~ " -a Marcar para exportação as variáveis que são criadas ou " -#~ "modificadas." +#~ msgstr " -a Marcar para exportação as variáveis que são criadas ou modificadas." #~ msgid " -b Notify of job termination immediately." #~ msgstr " -b Notificar imediatamente o término do trabalho." #~ msgid " -e Exit immediately if a command exits with a non-zero status." -#~ msgstr "" -#~ " -e Terminar imediatamente se um comando terminar com status != 0." +#~ msgstr " -e Terminar imediatamente se um comando terminar com status != 0." #~ msgid " -f Disable file name generation (globbing)." #~ msgstr " -f Desabilitar a geração de nome de arquivo (metacaracteres)." @@ -7375,16 +6914,14 @@ msgstr "" #~ msgid " -h Remember the location of commands as they are looked up." #~ msgstr " -h Lembrar da localização dos comandos ao procurá-los." -#~ msgid "" -#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" +#~ msgid " -i Force the shell to be an \"interactive\" one. Interactive shells" #~ msgstr " -i Forçar a shell ser do tipo \"interativa\". `Shells'" #~ msgid " always read `~/.bashrc' on startup." #~ msgstr " interativas sempre lêem `~/.bashrc' ao iniciar." #~ msgid " -k All assignment arguments are placed in the environment for a" -#~ msgstr "" -#~ " -k Todos os argumentos de atribuição são colocados no ambiente," +#~ msgstr " -k Todos os argumentos de atribuição são colocados no ambiente," #~ msgid " command, not just those that precede the command name." #~ msgstr " e não somente os que precedem o nome do comando." @@ -7408,8 +6945,7 @@ msgstr "" #~ msgstr " braceexpand o mesmo que -B" #~ msgid " emacs use an emacs-style line editing interface" -#~ msgstr "" -#~ " emacs usar interface de edição de linha estilo emacs" +#~ msgstr " emacs usar interface de edição de linha estilo emacs" #~ msgid " errexit same as -e" #~ msgstr " errexit o mesmo que -e" @@ -7426,10 +6962,8 @@ msgstr "" #~ msgid " interactive-comments" #~ msgstr " interactive-comments" -#~ msgid "" -#~ " allow comments to appear in interactive commands" -#~ msgstr "" -#~ " permite comentários em comandos interativos" +#~ msgid " allow comments to appear in interactive commands" +#~ msgstr " permite comentários em comandos interativos" #~ msgid " keyword same as -k" #~ msgstr " keyword o mesmo que -k" @@ -7458,15 +6992,11 @@ msgstr "" #~ msgid " physical same as -P" #~ msgstr " physical o mesmo que -P" -#~ msgid "" -#~ " posix change the behavior of bash where the default" -#~ msgstr "" -#~ " posix mudar o comportamento do `bash' onde o padrão" +#~ msgid " posix change the behavior of bash where the default" +#~ msgstr " posix mudar o comportamento do `bash' onde o padrão" -#~ msgid "" -#~ " operation differs from the 1003.2 standard to" -#~ msgstr "" -#~ " for diferente do padrão 1003.2, para tornar" +#~ msgid " operation differs from the 1003.2 standard to" +#~ msgstr " for diferente do padrão 1003.2, para tornar" #~ msgid " match the standard" #~ msgstr " igual ao padrão" @@ -7478,26 +7008,19 @@ msgstr "" #~ msgstr " verbose o mesmo que -v" #~ msgid " vi use a vi-style line editing interface" -#~ msgstr "" -#~ " vi usar interface de edição de linha estilo vi" +#~ msgstr " vi usar interface de edição de linha estilo vi" #~ msgid " xtrace same as -x" #~ msgstr " xtrace o mesmo que -x" -#~ msgid "" -#~ " -p Turned on whenever the real and effective user ids do not match." -#~ msgstr "" -#~ " -p Habilitado sempre que o usuário real e efetivo forem diferentes." +#~ msgid " -p Turned on whenever the real and effective user ids do not match." +#~ msgstr " -p Habilitado sempre que o usuário real e efetivo forem diferentes." #~ msgid " Disables processing of the $ENV file and importing of shell" -#~ msgstr "" -#~ " Desabilita o processamento do arquivo $ENV e importação das " -#~ "funções" +#~ msgstr " Desabilita o processamento do arquivo $ENV e importação das funções" -#~ msgid "" -#~ " functions. Turning this option off causes the effective uid and" -#~ msgstr "" -#~ " da shell. Desabilitando esta opção faz com que o `uid' e `gid'" +#~ msgid " functions. Turning this option off causes the effective uid and" +#~ msgstr " da shell. Desabilitando esta opção faz com que o `uid' e `gid'" #~ msgid " gid to be set to the real uid and gid." #~ msgstr " efetivos sejam feitos o mesmo que o `uid' e `gid' reais." @@ -7506,8 +7029,7 @@ msgstr "" #~ msgstr " -t Sair após ler e executar um comando." #~ msgid " -u Treat unset variables as an error when substituting." -#~ msgstr "" -#~ " -u Tratar como erro as variáveis não inicializadas na substituição." +#~ msgstr " -u Tratar como erro as variáveis não inicializadas na substituição." #~ msgid " -v Print shell input lines as they are read." #~ msgstr " -v Exibir as linhas de entrada da shell ao lê-las." @@ -7540,13 +7062,10 @@ msgstr "" #~ msgstr "Usando + em vez de - faz com que as opções sejam desabilitadas. As" #~ msgid "flags can also be used upon invocation of the shell. The current" -#~ msgstr "" -#~ "opções também podem ser usadas na chamada da shell. O conjunto atual" +#~ msgstr "opções também podem ser usadas na chamada da shell. O conjunto atual" -#~ msgid "" -#~ "set of flags may be found in $-. The remaining n ARGs are positional" -#~ msgstr "" -#~ "de opções pode ser encontrado em $-. Os n ARGs restantes são parâmetros" +#~ msgid "set of flags may be found in $-. The remaining n ARGs are positional" +#~ msgstr "de opções pode ser encontrado em $-. Os n ARGs restantes são parâmetros" #~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" #~ msgstr "posicionais e são atribuídos, em ordem, a $1, $2, .. $n. Se nenhum" @@ -7555,12 +7074,10 @@ msgstr "" #~ msgstr "ARG for fornecido, todas as variáveis da shell são exibidas." #~ msgid "For each NAME, remove the corresponding variable or function. Given" -#~ msgstr "" -#~ "Para cada NOME, remove a variável ou a função correspondente. Usando-se a" +#~ msgstr "Para cada NOME, remove a variável ou a função correspondente. Usando-se a" #~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," -#~ msgstr "" -#~ "opção `-v', `unset' atua somente nas variáveis. Usando-se a opção `-f'" +#~ msgstr "opção `-v', `unset' atua somente nas variáveis. Usando-se a opção `-f'" #~ msgid "unset will only act on functions. With neither flag, unset first" #~ msgstr "`unset' atua somente nas funções. Sem nenhuma opção, inicialmente" @@ -7568,32 +7085,26 @@ msgstr "" #~ msgid "tries to unset a variable, and if that fails, then tries to unset a" #~ msgstr "`unset' tenta remover uma variável e, se falhar, tenta remover uma" -#~ msgid "" -#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" -#~ msgstr "" -#~ "função. Algumas variáveis (como PATH e IFS) não podem ser removidas." +#~ msgid "function. Some variables (such as PATH and IFS) cannot be unset; also" +#~ msgstr "função. Algumas variáveis (como PATH e IFS) não podem ser removidas." #~ msgid "see readonly." #~ msgstr "Veja também o comando `readonly'." #~ msgid "NAMEs are marked for automatic export to the environment of" -#~ msgstr "" -#~ "NOMEs são marcados para serem automaticamente exportados para o ambiente" +#~ msgstr "NOMEs são marcados para serem automaticamente exportados para o ambiente" #~ msgid "subsequently executed commands. If the -f option is given," #~ msgstr "dos comando executados a seguir. Se a opção -f for fornecida," #~ msgid "the NAMEs refer to functions. If no NAMEs are given, or if `-p'" -#~ msgstr "" -#~ "os NOMEs se referem a funções. Se nenhum nome for fornecido, ou se `-p'" +#~ msgstr "os NOMEs se referem a funções. Se nenhum nome for fornecido, ou se `-p'" #~ msgid "is given, a list of all names that are exported in this shell is" -#~ msgstr "" -#~ "for usado, uma lista com todos os nomes que são exportados nesta shell é" +#~ msgstr "for usado, uma lista com todos os nomes que são exportados nesta shell é" #~ msgid "printed. An argument of `-n' says to remove the export property" -#~ msgstr "" -#~ "exibida. O argumento `-n' faz remover a propriedade de exportação dos" +#~ msgstr "exibida. O argumento `-n' faz remover a propriedade de exportação dos" #~ msgid "from subsequent NAMEs. An argument of `--' disables further option" #~ msgstr "NOMEs subseqüentes. O argumento `--' desabilita o processamento de" @@ -7601,40 +7112,29 @@ msgstr "" #~ msgid "processing." #~ msgstr "opções posteriores." -#~ msgid "" -#~ "The given NAMEs are marked readonly and the values of these NAMEs may" -#~ msgstr "" -#~ "Os NOMEs são marcados como somente para leitura, e os valores destes" +#~ msgid "The given NAMEs are marked readonly and the values of these NAMEs may" +#~ msgstr "Os NOMEs são marcados como somente para leitura, e os valores destes" #~ msgid "not be changed by subsequent assignment. If the -f option is given," -#~ msgstr "" -#~ "NOMEs não poderão ser alterados por novas atribuições. Se a opção -f for" +#~ msgstr "NOMEs não poderão ser alterados por novas atribuições. Se a opção -f for" #~ msgid "then functions corresponding to the NAMEs are so marked. If no" -#~ msgstr "" -#~ "fornecida, as funções correspondentes a NOMEs também são marcadas. Sem" +#~ msgstr "fornecida, as funções correspondentes a NOMEs também são marcadas. Sem" -#~ msgid "" -#~ "arguments are given, or if `-p' is given, a list of all readonly names" -#~ msgstr "" -#~ "nenhum argumento, ou se `-p' for usado, uma lista com todos os nomes" +#~ msgid "arguments are given, or if `-p' is given, a list of all readonly names" +#~ msgstr "nenhum argumento, ou se `-p' for usado, uma lista com todos os nomes" -#~ msgid "" -#~ "is printed. An argument of `-n' says to remove the readonly property" -#~ msgstr "" -#~ "somente para leitura é exibida. O argumento `-n' remove a propriedade" +#~ msgid "is printed. An argument of `-n' says to remove the readonly property" +#~ msgstr "somente para leitura é exibida. O argumento `-n' remove a propriedade" #~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" #~ msgstr "somente para leitura. A opção `-a' faz tratar cada NOME como uma" #~ msgid "an array variable. An argument of `--' disables further option" -#~ msgstr "" -#~ "variável tipo array. Um argumento `--' desabilita o processamento de" +#~ msgstr "variável tipo array. Um argumento `--' desabilita o processamento de" -#~ msgid "" -#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is" -#~ msgstr "" -#~ "Os parâmetros posicionais a partir de $N+1 ... são deslocados para $1 ..." +#~ msgid "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +#~ msgstr "Os parâmetros posicionais a partir de $N+1 ... são deslocados para $1 ..." #~ msgid "not given, it is assumed to be 1." #~ msgstr "Se N não for especificado, o valor 1 é assumido ($2 vira $1 ...)." @@ -7646,31 +7146,25 @@ msgstr "" #~ msgstr "$PATH são usados para encontrar o diretório contendo o ARQUIVO." #~ msgid "Suspend the execution of this shell until it receives a SIGCONT" -#~ msgstr "" -#~ "Suspender a execução desta shell até que o sinal SIGCONT seja recebido." +#~ msgstr "Suspender a execução desta shell até que o sinal SIGCONT seja recebido." #~ msgid "signal. The `-f' if specified says not to complain about this" #~ msgstr "Se a opção `-f' for especificada indica para não reclamar sobre ser" #~ msgid "being a login shell if it is; just suspend anyway." -#~ msgstr "" -#~ "uma `shell de login', caso seja; simplesmente suspender de qualquer forma." +#~ msgstr "uma `shell de login', caso seja; simplesmente suspender de qualquer forma." #~ msgid "Exits with a status of 0 (trueness) or 1 (falseness) depending on" -#~ msgstr "" -#~ "Termina com status 0 (verdadeiro) ou 1 (falso) conforme EXPR for avaliada." +#~ msgstr "Termina com status 0 (verdadeiro) ou 1 (falso) conforme EXPR for avaliada." #~ msgid "the evaluation of EXPR. Expressions may be unary or binary. Unary" -#~ msgstr "" -#~ "As expressões podem ser unárias ou binárias. As expressões unárias são" +#~ msgstr "As expressões podem ser unárias ou binárias. As expressões unárias são" #~ msgid "expressions are often used to examine the status of a file. There" -#~ msgstr "" -#~ "muito usadas para examinar o status de um arquivo. Existem, também," +#~ msgstr "muito usadas para examinar o status de um arquivo. Existem, também," #~ msgid "are string operators as well, and numeric comparison operators." -#~ msgstr "" -#~ "operadores para cadeias de caracteres (strings) e comparações numéricas." +#~ msgstr "operadores para cadeias de caracteres (strings) e comparações numéricas." #~ msgid "File operators:" #~ msgstr "Operadores para arquivos:" @@ -7679,8 +7173,7 @@ msgstr "" #~ msgstr " -b ARQUIVO Verdade se o arquivo for do tipo especial de bloco." #~ msgid " -c FILE True if file is character special." -#~ msgstr "" -#~ " -c ARQUIVO Verdade se o arquivo for do tipo especial de caracter." +#~ msgstr " -c ARQUIVO Verdade se o arquivo for do tipo especial de caracter." #~ msgid " -d FILE True if file is a directory." #~ msgstr " -d ARQUIVO Verdade se o arquivo for um diretório." @@ -7692,12 +7185,10 @@ msgstr "" #~ msgstr " -f ARQUIVO Verdade se o arquivo existir e for do tipo regular." #~ msgid " -g FILE True if file is set-group-id." -#~ msgstr "" -#~ " -g ARQUIVO Verdade se o arquivo tiver o bit \"set-group-id\" ativo." +#~ msgstr " -g ARQUIVO Verdade se o arquivo tiver o bit \"set-group-id\" ativo." #~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." -#~ msgstr "" -#~ " -h ARQUIVO Verdade se arquivo for um vínculo simbólico. Usar \"-L\"." +#~ msgstr " -h ARQUIVO Verdade se arquivo for um vínculo simbólico. Usar \"-L\"." #~ msgid " -L FILE True if file is a symbolic link." #~ msgstr " -L ARQUIVO Verdade se o arquivo for um vínculo simbólico." @@ -7709,8 +7200,7 @@ msgstr "" #~ msgstr " -p ARQUIVO Verdade se o arquivo for um `named pipe'." #~ msgid " -r FILE True if file is readable by you." -#~ msgstr "" -#~ " -r ARQUIVO Verdade se você tiver autorização para ler o arquivo." +#~ msgstr " -r ARQUIVO Verdade se você tiver autorização para ler o arquivo." #~ msgid " -s FILE True if file exists and is not empty." #~ msgstr " -s ARQUIVO Verdade se o arquivo existir e não estiver vazio." @@ -7724,26 +7214,19 @@ msgstr "" #~ " em um terminal." #~ msgid " -u FILE True if the file is set-user-id." -#~ msgstr "" -#~ " -u ARQUIVO Verdade se o arquivo tiver o bit \"set-user-id\" ativo." +#~ msgstr " -u ARQUIVO Verdade se o arquivo tiver o bit \"set-user-id\" ativo." #~ msgid " -w FILE True if the file is writable by you." -#~ msgstr "" -#~ " -w ARQUIVO Verdade se você tiver autorização para escrever no " -#~ "arquivo." +#~ msgstr " -w ARQUIVO Verdade se você tiver autorização para escrever no arquivo." #~ msgid " -x FILE True if the file is executable by you." -#~ msgstr "" -#~ " -x ARQUIVO Verdade se você tiver autorização para executar o arquivo." +#~ msgstr " -x ARQUIVO Verdade se você tiver autorização para executar o arquivo." #~ msgid " -O FILE True if the file is effectively owned by you." -#~ msgstr "" -#~ " -O ARQUIVO Verdade se o arquivo pertencer ao seu usuário efetivo." +#~ msgstr " -O ARQUIVO Verdade se o arquivo pertencer ao seu usuário efetivo." -#~ msgid "" -#~ " -G FILE True if the file is effectively owned by your group." -#~ msgstr "" -#~ " -G ARQUIVO Verdade se o arquivo pertencer ao seu grupo efetivo." +#~ msgid " -G FILE True if the file is effectively owned by your group." +#~ msgstr " -G ARQUIVO Verdade se o arquivo pertencer ao seu grupo efetivo." #~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" #~ msgstr " ARQ1 -nt ARQ2 Verdade se ARQ1 for mais novo (conforme a data" @@ -7786,18 +7269,14 @@ msgstr "" #~ msgid " STRING1 < STRING2" #~ msgstr " STRING1 < STRING2" -#~ msgid "" -#~ " True if STRING1 sorts before STRING2 lexicographically" -#~ msgstr "" -#~ " Verdade se STRING1 tiver ordenação anterior à STRING2." +#~ msgid " True if STRING1 sorts before STRING2 lexicographically" +#~ msgstr " Verdade se STRING1 tiver ordenação anterior à STRING2." #~ msgid " STRING1 > STRING2" #~ msgstr " STRING1 > STRING2" -#~ msgid "" -#~ " True if STRING1 sorts after STRING2 lexicographically" -#~ msgstr "" -#~ " Verdade se STRING1 tiver ordenação posterior à STRING2." +#~ msgid " True if STRING1 sorts after STRING2 lexicographically" +#~ msgstr " Verdade se STRING1 tiver ordenação posterior à STRING2." #~ msgid "Other operators:" #~ msgstr "Outros operadores:" @@ -7818,11 +7297,9 @@ msgstr "" #~ msgstr " -lt, -le, -gt, ou -ge." #~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," -#~ msgstr "" -#~ "Operadores aritméticos binários retornam verdadeiro se ARG1 for igual," +#~ msgstr "Operadores aritméticos binários retornam verdadeiro se ARG1 for igual," -#~ msgid "" -#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" #~ msgstr "diferente, menor, menor ou igual, maior, ou maior ou igual do que" #~ msgid "than ARG2." @@ -7835,60 +7312,46 @@ msgstr "" #~ msgstr "argumento deve ser o literal `]', para fechar o `[' de abertura." #~ msgid "Print the accumulated user and system times for processes run from" -#~ msgstr "" -#~ "Exibe os tempos acumulados do usuário e do sistema para os processos" +#~ msgstr "Exibe os tempos acumulados do usuário e do sistema para os processos" #~ msgid "the shell." #~ msgstr "executados por esta shell." #~ msgid "The command ARG is to be read and executed when the shell receives" -#~ msgstr "" -#~ "O comando em ARG é para ser lido e executado quando a shell receber o(s)" +#~ msgstr "O comando em ARG é para ser lido e executado quando a shell receber o(s)" #~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" -#~ msgstr "" -#~ "sinal(is) SINAL-ESPEC. Se ARG for omitido, todos os sinais especificados" +#~ msgstr "sinal(is) SINAL-ESPEC. Se ARG for omitido, todos os sinais especificados" #~ msgid "reset to their original values. If ARG is the null string each" -#~ msgstr "" -#~ "retornam aos seus valores originais. Se ARG for uma string nula, cada" +#~ msgstr "retornam aos seus valores originais. Se ARG for uma string nula, cada" #~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." -#~ msgstr "" -#~ "SINAL-ESPEC é ignorado pela shell e pelos comandos chamados por ela." +#~ msgstr "SINAL-ESPEC é ignorado pela shell e pelos comandos chamados por ela." #~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" -#~ msgstr "" -#~ "Se SINAL-ESPEC for EXIT (0) o comando em ARG é executado na saída da" +#~ msgstr "Se SINAL-ESPEC for EXIT (0) o comando em ARG é executado na saída da" #~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" -#~ msgstr "" -#~ "shell. Se SINAL-ESPEC for DEBUG, o comando em ARG é executado após cada" +#~ msgstr "shell. Se SINAL-ESPEC for DEBUG, o comando em ARG é executado após cada" #~ msgid "command. If ARG is `-p' then the trap commands associated with" -#~ msgstr "" -#~ "comando. Se ARG for `-p' então os comandos de captura associados com cada" +#~ msgstr "comando. Se ARG for `-p' então os comandos de captura associados com cada" #~ msgid "each SIGNAL_SPEC are displayed. If no arguments are supplied or if" #~ msgstr "SINAL-ESPEC são exibidos. Se nenhum argumento for fornecido, ou se" #~ msgid "only `-p' is given, trap prints the list of commands associated with" -#~ msgstr "" -#~ "somente `-p' for fornecido, é exibida a lista dos comandos associados" +#~ msgstr "somente `-p' for fornecido, é exibida a lista dos comandos associados" -#~ msgid "" -#~ "each signal number. SIGNAL_SPEC is either a signal name in " -#~ msgstr "" -#~ "com cada número de sinal. SINAL-ESPEC é um nome de sinal em ou" +#~ msgid "each signal number. SIGNAL_SPEC is either a signal name in " +#~ msgstr "com cada número de sinal. SINAL-ESPEC é um nome de sinal em ou" -#~ msgid "" -#~ "or a signal number. `trap -l' prints a list of signal names and their" -#~ msgstr "" -#~ "um número de sinal. `trap -l' exibe a lista de nomes de sinais com seus" +#~ msgid "or a signal number. `trap -l' prints a list of signal names and their" +#~ msgstr "um número de sinal. `trap -l' exibe a lista de nomes de sinais com seus" #~ msgid "corresponding numbers. Note that a signal can be sent to the shell" -#~ msgstr "" -#~ "números correspondentes. Note que o sinal pode ser enviado para a shell" +#~ msgstr "números correspondentes. Note que o sinal pode ser enviado para a shell" #~ msgid "with \"kill -signal $$\"." #~ msgstr "através do comando \"kill -SINAL $$\"." @@ -7897,19 +7360,13 @@ msgstr "" #~ msgstr "Para cada NOME, indica como este deve ser interpretado caso seja" #~ msgid "If the -t option is used, returns a single word which is one of" -#~ msgstr "" -#~ "Se a opção -t for fornecida, `type' retorna uma única palavra dentre" +#~ msgstr "Se a opção -t for fornecida, `type' retorna uma única palavra dentre" -#~ msgid "" -#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" -#~ msgstr "" -#~ "`alias', `keyword', `function', `builtin', `file' ou `', se NOME for um" +#~ msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +#~ msgstr "`alias', `keyword', `function', `builtin', `file' ou `', se NOME for um" -#~ msgid "" -#~ "alias, shell reserved word, shell function, shell builtin, disk file," -#~ msgstr "" -#~ "alias, uma palavra reservada, função ou comando interno da shell, um " -#~ "arquivo" +#~ msgid "alias, shell reserved word, shell function, shell builtin, disk file," +#~ msgstr "alias, uma palavra reservada, função ou comando interno da shell, um arquivo" #~ msgid "or unfound, respectively." #~ msgstr "em disco, ou não for encontrado, respectivamente." @@ -7923,10 +7380,8 @@ msgstr "" #~ msgid "If the -a flag is used, displays all of the places that contain an" #~ msgstr "Se a opção -a for fornecida, exibe todos os locais que contém um" -#~ msgid "" -#~ "executable named `file'. This includes aliases and functions, if and" -#~ msgstr "" -#~ "arquivo executável chamado `ARQUIVO', incluindo os aliases e funções," +#~ msgid "executable named `file'. This includes aliases and functions, if and" +#~ msgstr "arquivo executável chamado `ARQUIVO', incluindo os aliases e funções," #~ msgid "only if the -p flag is not also used." #~ msgstr "mas somente se a opção -p não for fornecida conjuntamente." @@ -7938,12 +7393,10 @@ msgstr "" #~ msgstr "-a, -p, and -t, respectivamente." #~ msgid "Ulimit provides control over the resources available to processes" -#~ msgstr "" -#~ "Ulimit estabelece controle sobre os recursos disponíveis para os processos" +#~ msgstr "Ulimit estabelece controle sobre os recursos disponíveis para os processos" #~ msgid "started by the shell, on systems that allow such control. If an" -#~ msgstr "" -#~ "iniciados por esta shell, em sistemas que permitem estes controles. Se uma" +#~ msgstr "iniciados por esta shell, em sistemas que permitem estes controles. Se uma" #~ msgid "option is given, it is interpreted as follows:" #~ msgstr "opção for fornecida, é interpretada como mostrado a seguir:" @@ -7958,15 +7411,13 @@ msgstr "" #~ msgstr " -a\ttodos os limites correntes são informados" #~ msgid " -c\tthe maximum size of core files created" -#~ msgstr "" -#~ " -c\to tamanho máximo para os arquivos de imagem do núcleo criados" +#~ msgstr " -c\to tamanho máximo para os arquivos de imagem do núcleo criados" #~ msgid " -d\tthe maximum size of a process's data segment" #~ msgstr " -d\to tamanho máximo do segmento de dados de um processo" #~ msgid " -m\tthe maximum resident set size" -#~ msgstr "" -#~ " -m\to tamanho máximo do conjunto de processos residentes em memória" +#~ msgstr " -m\to tamanho máximo do conjunto de processos residentes em memória" #~ msgid " -s\tthe maximum stack size" #~ msgstr " -s\to tamanho máximo da pilha" @@ -7990,15 +7441,13 @@ msgstr "" #~ msgstr " -v\to tamanho da memória virtual" #~ msgid "If LIMIT is given, it is the new value of the specified resource." -#~ msgstr "" -#~ "Se LIMITE for fornecido, torna-se o novo valor do recurso especificado." +#~ msgstr "Se LIMITE for fornecido, torna-se o novo valor do recurso especificado." #~ msgid "Otherwise, the current value of the specified resource is printed." #~ msgstr "Senão, o valor atual do recurso especificado é exibido." #~ msgid "If no option is given, then -f is assumed. Values are in 1k" -#~ msgstr "" -#~ "Se nenhuma opção for fornecida, então -f é assumido. Os valores são em" +#~ msgstr "Se nenhuma opção for fornecida, então -f é assumido. Os valores são em" #~ msgid "increments, except for -t, which is in seconds, -p, which is in" #~ msgstr "incrementos de 1k, exceto para -t, que é em segundos, -p, que é em" @@ -8009,101 +7458,77 @@ msgstr "" #~ msgid "processes." #~ msgstr "processos." -#~ msgid "" -#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" -#~ msgstr "" -#~ "MODO é atribuído à máscara de criação de arquivos do usuário. Se omitido," +#~ msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if" +#~ msgstr "MODO é atribuído à máscara de criação de arquivos do usuário. Se omitido," -#~ msgid "" -#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" -#~ msgstr "" -#~ "ou se `-S' for especificado, a máscara em uso é exibida. A opção `-S'" +#~ msgid "`-S' is supplied, the current value of the mask is printed. The `-S'" +#~ msgstr "ou se `-S' for especificado, a máscara em uso é exibida. A opção `-S'" -#~ msgid "" -#~ "option makes the output symbolic; otherwise an octal number is output." +#~ msgid "option makes the output symbolic; otherwise an octal number is output." #~ msgstr "exibe símbolos na saída; sem esta opção um número octal é exibido." #~ msgid "If MODE begins with a digit, it is interpreted as an octal number," -#~ msgstr "" -#~ "Se MODO começar por um dígito, é interpretado como sendo um número octal," +#~ msgstr "Se MODO começar por um dígito, é interpretado como sendo um número octal," -#~ msgid "" -#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." -#~ msgstr "" -#~ "senão devem ser caracteres simbólicos, como os aceitos por chmod(1)." +#~ msgid "otherwise it is a symbolic mode string like that accepted by chmod(1)." +#~ msgstr "senão devem ser caracteres simbólicos, como os aceitos por chmod(1)." -#~ msgid "" -#~ "Wait for the specified process and report its termination status. If" -#~ msgstr "" -#~ "Aguardar pelo processo especificado e informar seu status de término. Se N" +#~ msgid "Wait for the specified process and report its termination status. If" +#~ msgstr "Aguardar pelo processo especificado e informar seu status de término. Se N" #~ msgid "N is not given, all currently active child processes are waited for," -#~ msgstr "" -#~ "não for especificado, todos os processos filhos ativos são aguardados," +#~ msgstr "não for especificado, todos os processos filhos ativos são aguardados," #~ msgid "and the return code is zero. N may be a process ID or a job" #~ msgstr "e o código de retorno é zero. N pode ser o ID de um processo ou a" #~ msgid "specification; if a job spec is given, all processes in the job's" -#~ msgstr "" -#~ "especificação de um trabalho; Se for a especificação de um trabalho, todos" +#~ msgstr "especificação de um trabalho; Se for a especificação de um trabalho, todos" #~ msgid "pipeline are waited for." #~ msgstr "os processos presentes no `pipeline' do trabalho são aguardados." #~ msgid "and the return code is zero. N is a process ID; if it is not given," -#~ msgstr "" -#~ "e o código de retorno é zero. N é o ID de um processo; se N não for" +#~ msgstr "e o código de retorno é zero. N é o ID de um processo; se N não for" #~ msgid "all child processes of the shell are waited for." #~ msgstr "especificado, todos os processos filhos da shell são aguardados." #~ msgid "The `for' loop executes a sequence of commands for each member in a" -#~ msgstr "" -#~ "O laço `for' executa a seqüência de comandos para cada membro na lista de" +#~ msgstr "O laço `for' executa a seqüência de comandos para cada membro na lista de" -#~ msgid "" -#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" -#~ msgstr "" -#~ "items. Se `in PALAVRAS ...;' não estiver presente, então `in \"$@\"'" +#~ msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +#~ msgstr "items. Se `in PALAVRAS ...;' não estiver presente, então `in \"$@\"'" -#~ msgid "" -#~ "assumed. For each element in WORDS, NAME is set to that element, and" -#~ msgstr "" -#~ "(parâmetros posicionais) é assumido. Para cada elemento em PALAVRAS, NOME" +#~ msgid "assumed. For each element in WORDS, NAME is set to that element, and" +#~ msgstr "(parâmetros posicionais) é assumido. Para cada elemento em PALAVRAS, NOME" #~ msgid "the COMMANDS are executed." #~ msgstr "assume seu valor, e os COMANDOS são executados." #~ msgid "The WORDS are expanded, generating a list of words. The" -#~ msgstr "" -#~ "As palavras são expandidas, gerando uma lista de palavras. O conjunto" +#~ msgstr "As palavras são expandidas, gerando uma lista de palavras. O conjunto" #~ msgid "set of expanded words is printed on the standard error, each" -#~ msgstr "" -#~ "de palavras expandidas é enviado para a saída de erro padrão, cada uma" +#~ msgstr "de palavras expandidas é enviado para a saída de erro padrão, cada uma" #~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" -#~ msgstr "" -#~ "precedida por um número. Se `in PALAVRAS' for omitido, `in \"$@\"' é" +#~ msgstr "precedida por um número. Se `in PALAVRAS' for omitido, `in \"$@\"' é" #~ msgid "is assumed. The PS3 prompt is then displayed and a line read" #~ msgstr "assumido. Em seguida o prompt PS3 é exibido, e uma linha é lida da" #~ msgid "from the standard input. If the line consists of the number" -#~ msgstr "" -#~ "entrada padrão. Se a linha consistir do número correspondente ao número" +#~ msgstr "entrada padrão. Se a linha consistir do número correspondente ao número" #~ msgid "corresponding to one of the displayed words, then NAME is set" #~ msgstr "de uma das palavras exibidas, então NOME é atribuído para esta" #~ msgid "to that word. If the line is empty, WORDS and the prompt are" -#~ msgstr "" -#~ "PALAVRA. Se a linha estiver vazia, PALAVRAS e o prompt são exibidos" +#~ msgstr "PALAVRA. Se a linha estiver vazia, PALAVRAS e o prompt são exibidos" #~ msgid "redisplayed. If EOF is read, the command completes. Any other" -#~ msgstr "" -#~ "novamente. Se EOF for lido, o comando termina. Qualquer outro valor" +#~ msgstr "novamente. Se EOF for lido, o comando termina. Qualquer outro valor" #~ msgid "value read causes NAME to be set to null. The line read is saved" #~ msgstr "lido faz com que NOME seja tornado nulo. A linha lida é salva" @@ -8115,42 +7540,28 @@ msgstr "" #~ msgstr "até que o comando `break' ou `return' seja executado." #~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" -#~ msgstr "" -#~ "Executar seletivamente COMANDOS tomando por base a correspondência entre" +#~ msgstr "Executar seletivamente COMANDOS tomando por base a correspondência entre" #~ msgid "`|' is used to separate multiple patterns." -#~ msgstr "" -#~ "PALAVRA e PADRÃO. O caracter `|' é usado para separar múltiplos padrões." +#~ msgstr "PALAVRA e PADRÃO. O caracter `|' é usado para separar múltiplos padrões." -#~ msgid "" -#~ "The if COMMANDS are executed. If the exit status is zero, then the then" -#~ msgstr "" -#~ "Os COMANDOS `if' são executados. Se os status de saída for zero, então os" +#~ msgid "The if COMMANDS are executed. If the exit status is zero, then the then" +#~ msgstr "Os COMANDOS `if' são executados. Se os status de saída for zero, então os" -#~ msgid "" -#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" -#~ msgstr "" -#~ "COMANDOS `then' são executados, senão, os COMANDOS `elif' são executados " -#~ "em" +#~ msgid "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +#~ msgstr "COMANDOS `then' são executados, senão, os COMANDOS `elif' são executados em" -#~ msgid "" -#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" -#~ msgstr "" -#~ "seqüência e, se o status de saída for zero, os COMANDOS `then' associados" +#~ msgid "in turn, and if the exit status is zero, the corresponding then COMMANDS" +#~ msgstr "seqüência e, se o status de saída for zero, os COMANDOS `then' associados" -#~ msgid "" -#~ "are executed and the if command completes. Otherwise, the else COMMANDS" -#~ msgstr "" -#~ "são executados e o `if' termina. Senão, os COMANDOS da cláusula `else'" +#~ msgid "are executed and the if command completes. Otherwise, the else COMMANDS" +#~ msgstr "são executados e o `if' termina. Senão, os COMANDOS da cláusula `else'" -#~ msgid "" -#~ "are executed, if present. The exit status is the exit status of the last" -#~ msgstr "" -#~ "são executados, se houver. O status de saída é o status de saída do" +#~ msgid "are executed, if present. The exit status is the exit status of the last" +#~ msgstr "são executados, se houver. O status de saída é o status de saída do" #~ msgid "command executed, or zero if no condition tested true." -#~ msgstr "" -#~ "último comando executado, ou zero, se nenhuma condição for verdadeira." +#~ msgstr "último comando executado, ou zero, se nenhuma condição for verdadeira." #~ msgid "Expand and execute COMMANDS as long as the final command in the" #~ msgstr "Expande e executa COMANDOS enquanto o comando final nos" @@ -8177,22 +7588,16 @@ msgstr "" #~ msgstr "redirecionar todo um conjunto de comandos." #~ msgid "This is similar to the `fg' command. Resume a stopped or background" -#~ msgstr "" -#~ "Semelhante ao comando `fg'. Prossegue a execução de um trabalho parado ou" +#~ msgstr "Semelhante ao comando `fg'. Prossegue a execução de um trabalho parado ou" #~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" -#~ msgstr "" -#~ "em segundo plano. Se DÍGITOS for especificado, então este trabalho é " -#~ "usado." +#~ msgstr "em segundo plano. Se DÍGITOS for especificado, então este trabalho é usado." -#~ msgid "" -#~ "WORD, then the job whose name begins with WORD is used. Following the" -#~ msgstr "" -#~ "Se for especificado PALAVRA, o trabalho começado por PALAVRA é usado." +#~ msgid "WORD, then the job whose name begins with WORD is used. Following the" +#~ msgstr "Se for especificado PALAVRA, o trabalho começado por PALAVRA é usado." #~ msgid "job specification with a `&' places the job in the background." -#~ msgstr "" -#~ "Seguindo-se a especificação por um `&' põe o trabalho em segundo plano." +#~ msgstr "Seguindo-se a especificação por um `&' põe o trabalho em segundo plano." #~ msgid "BASH_VERSION The version numbers of this Bash." #~ msgstr "BASH_VERSION Os números da versão desta `bash'." @@ -8206,15 +7611,11 @@ msgstr "" #~ msgid "\t\tdirectory." #~ msgstr "\t\tencontrado no diretório atual." -#~ msgid "" -#~ "HISTFILE The name of the file where your command history is stored." -#~ msgstr "" -#~ "HISTFILE O nome do arquivo onde o histórico de comandos é " -#~ "armazenado." +#~ msgid "HISTFILE The name of the file where your command history is stored." +#~ msgstr "HISTFILE O nome do arquivo onde o histórico de comandos é armazenado." #~ msgid "HISTFILESIZE The maximum number of lines this file can contain." -#~ msgstr "" -#~ "HISTFILESIZE O número máximo de linhas que este arquivo pode conter." +#~ msgstr "HISTFILESIZE O número máximo de linhas que este arquivo pode conter." #~ msgid "HISTSIZE The maximum number of history lines that a running" #~ msgstr "HISTSIZE O número máximo de linhas do histórico que uma" @@ -8223,16 +7624,12 @@ msgstr "" #~ msgstr "\t\tshell em execução pode acessar." #~ msgid "HOME The complete pathname to your login directory." -#~ msgstr "" -#~ "HOME O nome completo do caminho do seu diretório de login." +#~ msgstr "HOME O nome completo do caminho do seu diretório de login." -#~ msgid "" -#~ "HOSTTYPE The type of CPU this version of Bash is running under." -#~ msgstr "" -#~ "HOSTTYPE O tipo de CPU sob a qual esta `bash' está executando." +#~ msgid "HOSTTYPE The type of CPU this version of Bash is running under." +#~ msgstr "HOSTTYPE O tipo de CPU sob a qual esta `bash' está executando." -#~ msgid "" -#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" +#~ msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF" #~ msgstr "IGNOREEOF Controla a ação da shell ao receber um caracter" #~ msgid "\t\tcharacter as the sole input. If set, then the value" @@ -8245,16 +7642,13 @@ msgstr "" #~ msgstr "\t\tde forma seguida em uma linha vazia, antes da shell terminar" #~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." -#~ msgstr "" -#~ "\t\t(padrão 10). Caso contrário, EOF significa o fim da entrada de dados." +#~ msgstr "\t\t(padrão 10). Caso contrário, EOF significa o fim da entrada de dados." #~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." -#~ msgstr "" -#~ "MAILCHECK\tFreqüência, em segundos, para a `bash' verificar novo e-mail." +#~ msgstr "MAILCHECK\tFreqüência, em segundos, para a `bash' verificar novo e-mail." #~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" -#~ msgstr "" -#~ "MAILPATH\tUma lista, separada por dois pontos, de nomes de arquivos," +#~ msgstr "MAILPATH\tUma lista, separada por dois pontos, de nomes de arquivos," #~ msgid "\t\tfor new mail." #~ msgstr "\t\tnos quais a `bash' vai verificar se existe novo e-mail." @@ -8263,8 +7657,7 @@ msgstr "" #~ msgstr "OSTYPE\t\tA versão do Unix sob a qual a `bash' está executando." #~ msgid "PATH A colon-separated list of directories to search when" -#~ msgstr "" -#~ "PATH Uma lista, separada por dois pontos, de diretórios a" +#~ msgstr "PATH Uma lista, separada por dois pontos, de diretórios a" #~ msgid "\t\tlooking for commands." #~ msgstr "\t\tserem pesquisados quando os comandos forem procurados." @@ -8285,20 +7678,16 @@ msgstr "" #~ msgstr "TERM O nome do tipo de terminal em uso no momento." #~ msgid "auto_resume Non-null means a command word appearing on a line by" -#~ msgstr "" -#~ "auto_resume Não nulo significa que um comando aparecendo sozinho em" +#~ msgstr "auto_resume Não nulo significa que um comando aparecendo sozinho em" #~ msgid "\t\titself is first looked for in the list of currently" -#~ msgstr "" -#~ "\t\tlinha deve ser procurado primeiro na lista de trabalhos parados." +#~ msgstr "\t\tlinha deve ser procurado primeiro na lista de trabalhos parados." #~ msgid "\t\tstopped jobs. If found there, that job is foregrounded." -#~ msgstr "" -#~ "\t\tSe for encontrado na lista, o trabalho vai para o primeiro plano." +#~ msgstr "\t\tSe for encontrado na lista, o trabalho vai para o primeiro plano." #~ msgid "\t\tA value of `exact' means that the command word must" -#~ msgstr "" -#~ "\t\tO valor `exact' significa que a palavra do comando deve corresponder" +#~ msgstr "\t\tO valor `exact' significa que a palavra do comando deve corresponder" #~ msgid "\t\texactly match a command in the list of stopped jobs. A" #~ msgstr "\t\texatamente a um comando da lista de trabalhos parados." @@ -8310,23 +7699,19 @@ msgstr "" #~ msgstr "\t\tcorresponder a uma parte do trabalho. Qualquer outro valor" #~ msgid "\t\tthe command must be a prefix of a stopped job." -#~ msgstr "" -#~ "\t\tsignifica que o comando deve ser um prefixo de um trabalho parado." +#~ msgstr "\t\tsignifica que o comando deve ser um prefixo de um trabalho parado." #~ msgid "command_oriented_history" #~ msgstr "command_oriented_history" -#~ msgid "" -#~ " Non-null means to save multiple-line commands together on" -#~ msgstr "" -#~ " Se não for nulo significa salvar comandos com múltiplas" +#~ msgid " Non-null means to save multiple-line commands together on" +#~ msgstr " Se não for nulo significa salvar comandos com múltiplas" #~ msgid " a single history line." #~ msgstr " linhas, juntas em uma única linha do histórico." #~ msgid "histchars Characters controlling history expansion and quick" -#~ msgstr "" -#~ "histchars Caracteres que controlam a expansão do histórico e a" +#~ msgstr "histchars Caracteres que controlam a expansão do histórico e a" #~ msgid "\t\tsubstitution. The first character is the history" #~ msgstr "\t\tsubstituição rápida. O primeiro caracter é o de substituição" @@ -8341,12 +7726,10 @@ msgstr "" #~ msgstr "\t\té o de comentário do histórico, geralmente o `#'." #~ msgid "HISTCONTROL\tSet to a value of `ignorespace', it means don't enter" -#~ msgstr "" -#~ "HISTCONTROL\tCom valor igual a `ignorespace', significa não introduzir" +#~ msgstr "HISTCONTROL\tCom valor igual a `ignorespace', significa não introduzir" #~ msgid "\t\tlines which begin with a space or tab on the history" -#~ msgstr "" -#~ "\t\tlinhas que iniciam por espaço ou tabulação na lista de histórico." +#~ msgstr "\t\tlinhas que iniciam por espaço ou tabulação na lista de histórico." #~ msgid "\t\tlist. Set to a value of `ignoredups', it means don't" #~ msgstr "\t\tCom valor igual a `ignoredups', significa não introduzir linhas" @@ -8358,8 +7741,7 @@ msgstr "" #~ msgstr "\t\t`ignoreboth' significa combinar as duas opções. Remover," #~ msgid "\t\tor set to any other value than those above means to save" -#~ msgstr "" -#~ "\t\tou atribuir algum outro valor que não os acima, significa salvar" +#~ msgstr "\t\tou atribuir algum outro valor que não os acima, significa salvar" #~ msgid "\t\tall lines on the history list." #~ msgstr "\t\ttodas as linhas na lista de histórico." @@ -8368,22 +7750,19 @@ msgstr "" #~ msgstr "Adiciona o diretório no topo da pilha de diretórios, ou rotaciona a" #~ msgid "the stack, making the new top of the stack the current working" -#~ msgstr "" -#~ "pilha, fazendo o diretório atual de trabalho ficar no topo da pilha." +#~ msgstr "pilha, fazendo o diretório atual de trabalho ficar no topo da pilha." #~ msgid "directory. With no arguments, exchanges the top two directories." #~ msgstr "Sem nenhum argumento, troca os dois diretórios do topo." #~ msgid "+N\tRotates the stack so that the Nth directory (counting" -#~ msgstr "" -#~ "+N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" +#~ msgstr "+N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" #~ msgid "\tfrom the left of the list shown by `dirs') is at the top." #~ msgstr "\tpartir da esquerda da lista exibida por `dirs') fique no topo." #~ msgid "-N\tRotates the stack so that the Nth directory (counting" -#~ msgstr "" -#~ "-N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" +#~ msgstr "-N\tRotaciona a pilha de tal forma que o n-ésimo diretório (contado a" #~ msgid "\tfrom the right) is at the top." #~ msgstr "\tpartir da direita) fique no topo." @@ -8424,8 +7803,7 @@ msgstr "" #~ msgid "\tremoves the last directory, `popd -1' the next to last." #~ msgstr "\tremove o último diretório, `popd -1' o penúltimo." -#~ msgid "" -#~ "-n\tsuppress the normal change of directory when removing directories" +#~ msgid "-n\tsuppress the normal change of directory when removing directories" #~ msgstr "-n\tsuprime a troca normal de diretório ao remover-se diretórios" #~ msgid "\tfrom the stack, so only the stack is manipulated." @@ -8440,57 +7818,44 @@ msgstr "" #~ msgid "back up through the list with the `popd' command." #~ msgstr "removidos da lista através do comando `popd'." -#~ msgid "" -#~ "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgid "The -l flag specifies that `dirs' should not print shorthand versions" #~ msgstr "A opção -l especifica que `dirs' não deve exibir a versão resumida" -#~ msgid "" -#~ "of directories which are relative to your home directory. This means" -#~ msgstr "" -#~ "dos diretórios relativos ao seu diretório `home'. Isto significa que" +#~ msgid "of directories which are relative to your home directory. This means" +#~ msgstr "dos diretórios relativos ao seu diretório `home'. Isto significa que" #~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" -#~ msgstr "" -#~ "`~/bin' deve ser exibido como `/home/você/bin'. A opção -v faz com que" +#~ msgstr "`~/bin' deve ser exibido como `/home/você/bin'. A opção -v faz com que" #~ msgid "causes `dirs' to print the directory stack with one entry per line," #~ msgstr "`dirs' exiba a pilha de diretórios com uma entrada por linha," -#~ msgid "" -#~ "prepending the directory name with its position in the stack. The -p" +#~ msgid "prepending the directory name with its position in the stack. The -p" #~ msgstr "antecedendo o nome do diretório com a sua posição na pilha. A opção" #~ msgid "flag does the same thing, but the stack position is not prepended." #~ msgstr "-p faz a mesma coisa, mas a posição na pilha não é exibida. A opção" -#~ msgid "" -#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgid "The -c flag clears the directory stack by deleting all of the elements." #~ msgstr "-c limpa a pilha de diretórios apagando todos os seus elementos." -#~ msgid "" -#~ "+N\tdisplays the Nth entry counting from the left of the list shown by" -#~ msgstr "" -#~ "+N\texibe a n-ésima entrada contada a partir da esquerda da lista exibida" +#~ msgid "+N\tdisplays the Nth entry counting from the left of the list shown by" +#~ msgstr "+N\texibe a n-ésima entrada contada a partir da esquerda da lista exibida" #~ msgid "\tdirs when invoked without options, starting with zero." #~ msgstr "\tpor `dirs', quando este é chamado sem opções, começando por zero." -#~ msgid "" -#~ "-N\tdisplays the Nth entry counting from the right of the list shown by" -#~ msgstr "" -#~ "-N\texibe a n-ésima entrada contada a partir da direita da lista exibida" +#~ msgid "-N\tdisplays the Nth entry counting from the right of the list shown by" +#~ msgstr "-N\texibe a n-ésima entrada contada a partir da direita da lista exibida" #~ msgid "Toggle the values of variables controlling optional behavior." -#~ msgstr "" -#~ "Alterna os valores das variáveis controladoras de comportamentos " -#~ "opcionais." +#~ msgstr "Alterna os valores das variáveis controladoras de comportamentos opcionais." #~ msgid "The -s flag means to enable (set) each OPTNAME; the -u flag" #~ msgstr "A opção -s ativa (set) cada NOME-OPÇÃO; a opção -u desativa cada" #~ msgid "unsets each OPTNAME. The -q flag suppresses output; the exit" -#~ msgstr "" -#~ "NOME-OPÇÃO. A opção -q suprime a saída; o status de término indica se" +#~ msgstr "NOME-OPÇÃO. A opção -q suprime a saída; o status de término indica se" #~ msgid "status indicates whether each OPTNAME is set or unset. The -o" #~ msgstr "cada NOME-OPÇÃO foi ativado ou desativado A opção -o restringe" @@ -8502,8 +7867,7 @@ msgstr "" #~ msgstr "Sem nenhuma opção, ou com a opção -p, uma lista com todas as" #~ msgid "settable options is displayed, with an indication of whether or" -#~ msgstr "" -#~ "opções que podem ser ativadas é exibida, com indicação sobre se cada uma" +#~ msgstr "opções que podem ser ativadas é exibida, com indicação sobre se cada uma" #~ msgid "not each is set." #~ msgstr "das opções está ativa ou não." diff --git a/po/ru.po b/po/ru.po index e07ed021c..d8a68edbb 100644 --- a/po/ru.po +++ b/po/ru.po @@ -8,133 +8,131 @@ msgid "" msgstr "" "Project-Id-Version: bash 4.4\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2018-04-27 14:15-0400\n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" "PO-Revision-Date: 2018-04-17 14:09+0300\n" "Last-Translator: Pavel Maryanov \n" "Language-Team: Russian \n" +"Language: 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" +"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 2.0.6\n" -#: arrayfunc.c:58 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "неправильный индекс массива" -#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 -#: variables.c:2922 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 #, c-format msgid "%s: removing nameref attribute" msgstr "%s: удаляется атрибут nameref" -#: arrayfunc.c:398 builtins/declare.def:831 +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: не удаётся преобразовать индекс в ассоциативный массив" -#: arrayfunc.c:582 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: недопустимый ключ ассоциативного массива" -#: arrayfunc.c:584 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: не удаётся присвоить значение нечисловому индексу" -#: arrayfunc.c:629 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" -msgstr "" -"%s: %s: необходимо использовать индекс при назначении ассоциативному массиву" +msgstr "%s: %s: необходимо использовать индекс при назначении ассоциативному массиву" -#: bashhist.c:436 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: не удаётся создать файл: %s" -#: bashline.c:4111 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: не удаётся найти keymap для команды" -#: bashline.c:4221 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: первый непробельный символ не является «\"»" -#: bashline.c:4250 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "нет закрывающего «%c» в %s" -#: bashline.c:4284 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: отсутствует разделитель-двоеточие" -#: braces.c:331 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "расширение скобки: не удаётся выделить память для %s" -#: braces.c:429 -#, fuzzy, c-format -msgid "brace expansion: failed to allocate memory for %u elements" +#: braces.c:427 +#, c-format +msgid "brace expansion: failed to allocate memory for %d elements" msgstr "расширение скобки: не удаётся выделить память для %d элементов" -#: braces.c:473 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "расширение скобки: не удалось выделить память для «%s»" -#: builtins/alias.def:131 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "«%s»: недопустимый псевдоним" -#: builtins/bind.def:122 builtins/bind.def:125 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "редактирование строки не включено" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "«%s»: недопустимое название keymap" -#: builtins/bind.def:252 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s: не удаётся прочитать файл: %s" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:270 +#, c-format +msgid "`%s': cannot unbind" +msgstr "«%s»: не удаётся отменить привязку" + +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "«%s»: неизвестное название функции" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s не привязан ни к какой клавише.\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s можно вызвать через " -#: builtins/bind.def:353 builtins/bind.def:368 -#, c-format -msgid "`%s': cannot unbind" -msgstr "«%s»: не удаётся отменить привязку" - -#: builtins/break.def:77 builtins/break.def:119 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "счётчик циклов" -#: builtins/break.def:139 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "имеет значение только для циклов «for», «while» или «until»" @@ -148,162 +146,162 @@ msgstr "" " \n" " Без EXPR выполняет возврат " -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "Не задана переменная HOME" -#: builtins/cd.def:327 builtins/common.c:161 test.c:889 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "слишком много аргументов" -#: builtins/cd.def:334 +#: builtins/cd.def:336 msgid "null directory" msgstr "нулевой каталог" -#: builtins/cd.def:345 +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "Не задана переменная OLDPWD" -#: builtins/common.c:96 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "строка %d: " -#: builtins/common.c:134 error.c:264 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "предупреждение: " -#: builtins/common.c:148 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: использование: " -#: builtins/common.c:193 shell.c:510 shell.c:838 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s: для параметра требуется аргумент" -#: builtins/common.c:200 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s: требуется числовой аргумент" -#: builtins/common.c:207 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s: не найден" -#: builtins/common.c:216 shell.c:851 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s: недопустимый параметр" -#: builtins/common.c:223 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s: недопустимое название параметра" -#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "«%s»: это недопустимый идентификатор" -#: builtins/common.c:240 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "недопустимое восьмеричное число" -#: builtins/common.c:242 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "недопустимое шестнадцатеричное число" -#: builtins/common.c:244 expr.c:1538 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "недопустимое число" -#: builtins/common.c:252 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s: недопустимое указание сигнала" -#: builtins/common.c:259 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "«%s»: это не идентификатор процесса и не допустимый указатель задания" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s: переменная только для чтения" -#: builtins/common.c:274 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s: %s за пределами диапазона" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "аргумент" -#: builtins/common.c:276 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s за пределами диапазона" -#: builtins/common.c:284 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s: нет такого задания" -#: builtins/common.c:292 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s: нет управления заданиями" -#: builtins/common.c:294 +#: builtins/common.c:300 msgid "no job control" msgstr "нет управления заданиями" -#: builtins/common.c:304 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s: ограниченный режим" -#: builtins/common.c:306 +#: builtins/common.c:312 msgid "restricted" msgstr "ограниченный режим" -#: builtins/common.c:314 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s: это не не встроенная команда bash" -#: builtins/common.c:323 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "ошибка записи: %s" -#: builtins/common.c:331 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "ошибка назначения атрибутов терминала: %s" -#: builtins/common.c:333 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "ошибка получения атрибутов терминала: %s" -#: builtins/common.c:579 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s: ошибка определения текущего каталога: %s: %s\n" -#: builtins/common.c:645 builtins/common.c:647 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s: неоднозначный указатель задания" -#: builtins/common.c:908 +#: builtins/common.c:918 msgid "help not available in this version" msgstr "справка отсутствует в этой версии" @@ -312,69 +310,69 @@ msgstr "справка отсутствует в этой версии" msgid "%s: invalid action name" msgstr "%s: недопустимое название действия" -#: builtins/complete.def:452 builtins/complete.def:653 -#: builtins/complete.def:874 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s: нет определения завершения" -#: builtins/complete.def:707 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "предупреждение: параметр -F может работать не так, как ожидается" -#: builtins/complete.def:709 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "предупреждение: параметр -C может работать не так, как ожидается" -#: builtins/complete.def:847 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "сейчас не выполняет функцию завершения" -#: builtins/declare.def:132 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "можно использовать только внутри функции" -#: builtins/declare.def:369 builtins/declare.def:736 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: ссылочная переменная не может быть массивом" -#: builtins/declare.def:380 variables.c:3161 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: переменные nameref, ссылающиеся сами на себя, не допускаются" -#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 -#: variables.c:3158 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 #, c-format msgid "%s: circular name reference" msgstr "%s: круговая ссылка на имя" -#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 #, c-format msgid "`%s': invalid variable name for name reference" msgstr "«%s»: недопустимое название переменной для ссылки на имя" -#: builtins/declare.def:500 +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "«-f» нельзя использовать для создания функций" -#: builtins/declare.def:512 execute_cmd.c:5797 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s: значение функции можно только считать" -#: builtins/declare.def:804 +#: builtins/declare.def:753 #, c-format msgid "%s: quoted compound array assignment deprecated" msgstr "%s: присвоение составного массива в кавычках устарело" -#: builtins/declare.def:818 +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: переменные массива нельзя уничтожить таким образом" -#: builtins/declare.def:825 builtins/read.def:784 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: не удаётся преобразовать ассоциативный массив в индексированный" @@ -408,68 +406,68 @@ msgstr "%s: не загружается динамически" msgid "%s: cannot delete: %s" msgstr "%s: не удаётся удалить: %s" -#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: это каталог" -#: builtins/evalfile.c:144 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: это не обычный файл" -#: builtins/evalfile.c:153 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: файл слишком велик" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: не удаётся запустить бинарный файл" -#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: не удаётся запустить: %s" -#: builtins/exit.def:64 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "выход\n" -#: builtins/exit.def:89 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "не командный процессор login: используйте «exit»" -#: builtins/exit.def:121 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "Есть остановленные задания.\n" -#: builtins/exit.def:123 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "Есть выполняемые задания.\n" -#: builtins/fc.def:265 +#: builtins/fc.def:269 msgid "no command found" msgstr "команда не найдена" -#: builtins/fc.def:323 builtins/fc.def:372 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "указание журнала команд" -#: builtins/fc.def:393 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: не удаётся открыть временный файл: %s" -#: builtins/fg_bg.def:152 builtins/jobs.def:284 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "текущий" -#: builtins/fg_bg.def:161 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "задание %d запущено без возможности управления" @@ -484,41 +482,39 @@ msgstr "%s: недопустимый параметр — %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: для параметра требуется аргумент — %c\n" -#: builtins/hash.def:91 +#: builtins/hash.def:92 msgid "hashing disabled" msgstr "хэширование отключено" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: таблица хэшей пустая\n" -#: builtins/hash.def:266 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "вызовы\tкоманда\n" -#: builtins/help.def:133 +#: builtins/help.def:135 +#, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Команды, соответствующие ключевому слову «" msgstr[1] "Команды, соответствующие ключевым словам «" msgstr[2] "Команды, соответствующие ключевым словам «" -#: builtins/help.def:185 +#: builtins/help.def:187 #, 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»." +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:224 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: не удаётся открыть файл: %s" -#: builtins/help.def:524 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -529,32 +525,28 @@ msgid "" "A star (*) next to a name means that the command is disabled.\n" "\n" msgstr "" -"Показанные ниже команды определены внутри командного процессора. Чтобы " -"вывести полный список, введите «help».\n" +"Показанные ниже команды определены внутри командного процессора. Чтобы вывести полный список, введите «help».\n" "Чтобы вывести справку по функции «name», введите «help name».\n" "Чтобы вывести справку по командному процессору, введите «info bash».\n" -"Чтобы вывести справку по командам, которые отсутствуют в этом списке, " -"введите «man -k» или «info».\n" +"Чтобы вывести справку по командам, которые отсутствуют в этом списке, введите «man -k» или «info».\n" "\n" -"Звёздочка (*) рядом с названием команды означает, что эта команда " -"отключена.\n" +"Звёздочка (*) рядом с названием команды означает, что эта команда отключена.\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "нельзя использовать больше одного параметра -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 +#: builtins/history.def:187 msgid "history position" msgstr "положение журнала команд" -#: builtins/history.def:331 +#: builtins/history.def:264 #, c-format msgid "%s: invalid timestamp" msgstr "%s: недопустимая метка времени" -#: builtins/history.def:442 +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: не удалось расширить журнал команд" @@ -568,16 +560,16 @@ msgstr "%s: ошибка inlib" msgid "no other options allowed with `-x'" msgstr "с параметром «-x» нельзя указывать другие параметры" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: аргументами должны быть идентификаторы процессов или заданий" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "Неизвестная ошибка" -#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "ожидается выражение" @@ -586,69 +578,69 @@ msgstr "ожидается выражение" msgid "%s: not an indexed array" msgstr "%s: это не индексированный массив" -#: builtins/mapfile.def:271 builtins/read.def:305 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: недопустимое указание дескриптора файла" -#: builtins/mapfile.def:279 builtins/read.def:312 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: invalid недопустимый дескриптор файла: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: недопустимое число строк" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: недопустимое начало массива" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: недопустимый квант обратного вызова" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "пустое имя переменной массива" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "требуется поддержка переменных массива" -#: builtins/printf.def:416 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "«%s»: отсутствует символ форматирования" -#: builtins/printf.def:471 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "«%c»: недопустимое указание формата времени" -#: builtins/printf.def:673 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "«%c»: недопустимый символ форматирования" -#: builtins/printf.def:699 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "предупреждение: %s: %s" -#: builtins/printf.def:785 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "ошибка анализа формата: %s" -#: builtins/printf.def:882 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "отсутствует шестнадцатеричная цифра для \\x" -#: builtins/printf.def:897 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "отсутствует цифра Юникода для \\%c" @@ -662,19 +654,19 @@ msgstr "отсутствует другой каталог" msgid "%s: invalid argument" msgstr "%s: недопустимый аргумент" -#: builtins/pushd.def:480 +#: builtins/pushd.def:475 msgid "" msgstr "<отсутствует текущий каталог>" -#: builtins/pushd.def:524 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "стек каталогов пуст" -#: builtins/pushd.def:526 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "индекс стека каталогов" -#: builtins/pushd.def:701 +#: builtins/pushd.def:696 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,12 +681,10 @@ msgid "" " \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" +" +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" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "Выводит список запомненных на данный момент каталогов. Каталоги\n" @@ -716,7 +706,7 @@ msgstr "" " -N\tпоказать N-ю запись справа в списке каталогов,\n" "\tпоказанного при вызове без параметров, начиная с нуля." -#: builtins/pushd.def:723 +#: builtins/pushd.def:718 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" @@ -742,8 +732,7 @@ msgid "" msgstr "" "Добавляет каталог в начало стека каталогов или выполняет\n" " ротацию стека, помещая в начало стека текущий рабочий\n" -" каталог. Если аргументы не указаны, меняет местами два первых " -"каталога.\n" +" каталог. Если аргументы не указаны, меняет местами два первых каталога.\n" " \n" " Параметры:\n" " -n\tпредотвращает обычное изменение каталога при добавлении\n" @@ -763,7 +752,7 @@ msgstr "" " \n" " Встроенная команда dirs показывает стек каталогов." -#: builtins/pushd.def:748 +#: builtins/pushd.def:743 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,45 +790,45 @@ msgstr "" " \n" " Встроенная команда dirs показывает стек каталогов." -#: builtins/read.def:277 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: недопустимое указание тайм-аута" -#: builtins/read.def:729 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "ошибка чтения: %d: %s" -#: builtins/return.def:68 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "возврат можно выполнить только из функции или исходного скрипта" -#: builtins/set.def:834 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "нельзя одновременно сбросить функцию и переменную" -#: builtins/set.def:881 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: не удаётся выполнить сброс" -#: builtins/set.def:902 variables.c:3597 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: не удаётся выполнить сброс: %s доступен только для чтения" -#: builtins/set.def:915 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: это не переменная массива" -#: builtins/setattr.def:189 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: это не функция" -#: builtins/setattr.def:194 +#: builtins/setattr.def:196 #, c-format msgid "%s: cannot export" msgstr "%s: не удаётся экспортировать" @@ -848,20 +837,20 @@ msgstr "%s: не удаётся экспортировать" msgid "shift count" msgstr "счётчик смещений" -#: builtins/shopt.def:301 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "нельзя одновременно задать и сбросить параметры командного процессора" -#: builtins/shopt.def:403 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: недопустимое название параметра командного процессора" -#: builtins/source.def:128 +#: builtins/source.def:131 msgid "filename argument required" msgstr "требуется аргумент с именем файла" -#: builtins/source.def:154 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: файл не найден" @@ -874,61 +863,61 @@ msgstr "не удаётся приостановить" msgid "cannot suspend a login shell" msgstr "не удаётся приостановить командный процессор login" -#: builtins/type.def:235 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s — это псевдонимом для «%s»\n" -#: builtins/type.def:256 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s — это ключевое слово командного процессора\n" -#: builtins/type.def:275 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s — это функция\n" -#: builtins/type.def:299 +#: builtins/type.def:300 #, c-format msgid "%s is a special shell builtin\n" msgstr "%s — это специальная встроенная команда bash\n" -#: builtins/type.def:301 +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s — это встроенная команда bash\n" -#: builtins/type.def:323 builtins/type.def:408 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s является %s\n" -#: builtins/type.def:343 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "для %s вычислен хэш (%s)\n" -#: builtins/ulimit.def:396 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: недопустимый аргумент ограничения" -#: builtins/ulimit.def:422 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "«%c»: недопустимая команда" -#: builtins/ulimit.def:451 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s: не удаётся получить ограничение: %s" -#: builtins/ulimit.def:477 +#: builtins/ulimit.def:479 msgid "limit" msgstr "ограничение" -#: builtins/ulimit.def:489 builtins/ulimit.def:789 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s: не удаётся изменить ограничение: %s" @@ -947,211 +936,202 @@ msgstr "«%c»: недопустимый оператор символьного msgid "`%c': invalid symbolic mode character" msgstr "«%c»: недопустимый знак символьного режима" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " строка " -#: error.c:164 +#: error.c:165 #, c-format msgid "last command: %s\n" msgstr "последняя команда: %s\n" -#: error.c:172 +#: error.c:173 #, c-format msgid "Aborting..." msgstr "Прерывание..." #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:287 +#: error.c:288 #, c-format msgid "INFORM: " msgstr "ИНФО: " -#: error.c:462 +#: error.c:463 msgid "unknown command error" msgstr "неизвестная ошибка команды" -#: error.c:463 +#: error.c:464 msgid "bad command type" msgstr "неверный тип команды" -#: error.c:464 +#: error.c:465 msgid "bad connector" msgstr "неверный соединитель" -#: error.c:465 +#: error.c:466 msgid "bad jump" msgstr "ошибка перехода" -#: error.c:503 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: не заданы границы переменной" -#: eval.c:242 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\aпревышено время ожидания ввода: auto-logout\n" -#: execute_cmd.c:536 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "не удаётся перенаправить стандартный ввод из /dev/null: %s" -#: execute_cmd.c:1294 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "TIMEFORMAT: «%c»: недопустимый символ форматирования" -#: execute_cmd.c:2330 +#: execute_cmd.c:2273 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" msgstr "execute_coproc: coproc [%d:%s] всё ещё существует" -#: execute_cmd.c:2456 +#: execute_cmd.c:2377 msgid "pipe error" msgstr "ошибка конвейера" -#: execute_cmd.c:4624 +#: execute_cmd.c:4496 #, c-format msgid "eval: maximum eval nesting level exceeded (%d)" msgstr "eval: достигнут максимальный уровень вложенности eval (%d)" -#: execute_cmd.c:4636 +#: execute_cmd.c:4508 #, c-format msgid "%s: maximum source nesting level exceeded (%d)" msgstr "%s: достигнут максимальный уровень вложенности source (%d)" -#: execute_cmd.c:4742 +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: достигнут максимальный уровень вложенности функций (%d)" -#: execute_cmd.c:5285 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" -msgstr "" -"%s: ограниченный режим: в названиях команд нельзя использовать косую черту «/»" +msgstr "%s: ограниченный режим: в названиях команд нельзя использовать косую черту «/»" -#: execute_cmd.c:5383 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s: команда не найдена" -#: execute_cmd.c:5627 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5665 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: неверный интерпретатор" -#: execute_cmd.c:5702 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: не удаётся запустить бинарный файл: %s" -#: execute_cmd.c:5788 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "«%s»: это специальная встроенная команда" -#: execute_cmd.c:5840 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "не удаётся скопировать файловый дескриптор %d в %d" -#: expr.c:263 +#: expr.c:259 msgid "expression recursion level exceeded" msgstr "слишком много вложенных выражений" -#: expr.c:291 +#: expr.c:283 msgid "recursion stack underflow" msgstr "отрицательное переполнение стека вложенных выражений" -#: expr.c:453 +#: expr.c:431 msgid "syntax error in expression" msgstr "синтаксическая ошибка в выражении" -#: expr.c:497 +#: expr.c:475 msgid "attempted assignment to non-variable" msgstr "значение можно присвоить только переменной" -#: expr.c:506 -#, fuzzy -msgid "syntax error in variable assignment" -msgstr "синтаксическая ошибка в выражении" - -#: expr.c:520 expr.c:886 +#: expr.c:495 expr.c:858 msgid "division by 0" msgstr "деление на 0" -#: expr.c:567 +#: expr.c:542 msgid "bug: bad expassign token" msgstr "ошибка: недопустимый маркер присвоения выражения" -#: expr.c:621 +#: expr.c:595 msgid "`:' expected for conditional expression" msgstr "в условном выражении должен быть символ «:»" -#: expr.c:947 +#: expr.c:919 msgid "exponent less than 0" msgstr "экспонента меньше нуля" -#: expr.c:1004 +#: expr.c:976 msgid "identifier expected after pre-increment or pre-decrement" -msgstr "" -"после предварительного инкремента или декремента ожидается идентификатор " +msgstr "после предварительного инкремента или декремента ожидается идентификатор " -#: expr.c:1030 +#: expr.c:1002 msgid "missing `)'" msgstr "отсутствует символ «)»" -#: expr.c:1081 expr.c:1458 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "синтаксическая ошибка: ожидается операнд" -#: expr.c:1460 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "ошибка синтаксиса: недопустимый математический оператор" -#: expr.c:1484 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (неверный маркер «%s»)" -#: expr.c:1542 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "недопустимое математическое основание" -#: expr.c:1562 +#: expr.c:1497 msgid "value too great for base" msgstr "слишком большое значение для основания" -#: expr.c:1611 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: ошибка выражения\n" -#: general.c:69 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: нет доступа к родительским каталогам" -#: input.c:99 subst.c:5858 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "не удаётся сбросить режим nodelay для файлового дескриптора %d" -#: input.c:266 +#: input.c:271 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" -msgstr "" -"не удаётся выделить новый дескриптор для входных данных bash из файлового " -"дескриптора %d" +msgstr "не удаётся выделить новый дескриптор для входных данных bash из файлового дескриптора %d" -#: input.c:274 +#: input.c:279 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: у нового файлового дескриптора %d уже есть буфер" @@ -1160,162 +1140,153 @@ msgstr "save_bash_input: у нового файлового дескриптор msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: pgrp pipe" -#: jobs.c:1080 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "идентификатор дочернего процесса %d принадлежит запущенному заданию %d" -#: jobs.c:1199 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "удаление остановленного задания %d с группой процесса %ld" -#: jobs.c:1303 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: процесс %5ld (%s) в the_pipeline" -#: jobs.c:1306 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" -msgstr "" -"add_process: процесс с идентификатором %5ld (%s) помечен как всё ещё активный" +msgstr "add_process: процесс с идентификатором %5ld (%s) помечен как всё ещё активный" -#: jobs.c:1635 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: нет процесса с таким идентификатором" -#: jobs.c:1650 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "Сигнал %d" -#: jobs.c:1664 jobs.c:1690 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "Завершён" -#: jobs.c:1669 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "Остановлен" -#: jobs.c:1673 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "Остановлен (%s)" -#: jobs.c:1677 +#: jobs.c:1632 msgid "Running" msgstr "Запущен" -#: jobs.c:1694 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "Завершён (%d)" -#: jobs.c:1696 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "Выход %d" -#: jobs.c:1699 +#: jobs.c:1654 msgid "Unknown status" msgstr "Состояние неизвестно" -#: jobs.c:1786 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(стек памяти сброшен на диск) " -#: jobs.c:1805 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (рабочий каталог: %s)" -#: jobs.c:2033 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "дочерний setpgid (%ld к %ld)" -#: jobs.c:2395 nojobs.c:657 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" -msgstr "" -"wait: процесс %ld не является дочерним процессом этого командного процессора" +msgstr "wait: процесс %ld не является дочерним процессом этого командного процессора" -#: jobs.c:2687 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wait_for: нет записей процесса %ld" -#: jobs.c:3048 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: задание %d остановлено" -#: jobs.c:3355 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: выполнение задания прервано" -#: jobs.c:3364 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: задание %d уже выполняется в фоновом режиме" -#: jobs.c:3590 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" -msgstr "" -"waitchld: включается WNOHANG, чтобы предотвратить появление неопределённого " -"блока" +msgstr "waitchld: включается WNOHANG, чтобы предотвратить появление неопределённого блока" -#: jobs.c:4114 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: строка %d: " -#: jobs.c:4128 nojobs.c:900 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (стек памяти сброшен на диск)" -#: jobs.c:4140 jobs.c:4153 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(рабочий каталог: %s)\n" -#: jobs.c:4185 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: ошибка вызова getpgrp " -#: jobs.c:4241 -#, fuzzy -msgid "initialize_job_control: no job control in background" -msgstr "initialize_job_control: дисциплина строки" - -#: jobs.c:4257 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: дисциплина строки" -#: jobs.c:4267 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4288 jobs.c:4297 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "не удаётся задать группу процесса терминала (%d)" -#: jobs.c:4302 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "этот командный процессор не может управлять заданиями" -#: lib/malloc/malloc.c:306 +#: lib/malloc/malloc.c:296 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: ошибка утверждения: %s\n" -#: lib/malloc/malloc.c:322 +#: lib/malloc/malloc.c:312 #, c-format msgid "" "\r\n" @@ -1324,43 +1295,39 @@ msgstr "" "\\r\n" "malloc: %s:%d: утверждение не удалось\\r\n" -#: lib/malloc/malloc.c:323 +#: lib/malloc/malloc.c:313 msgid "unknown" msgstr "неизвестно" -#: lib/malloc/malloc.c:811 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: блок в списке свободных затёрт" -#: lib/malloc/malloc.c:888 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: вызван с аргументом уже освобождённого блока" -#: lib/malloc/malloc.c:891 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: вызван с аргументом невыделенного блока" -#: lib/malloc/malloc.c:910 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" -msgstr "" -"free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " -"диапазона" +msgstr "free: обнаружено отрицательное переполнение; mh_nbytes байт за пределами диапазона" -#: lib/malloc/malloc.c:916 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: размеры начального и конечного блока отличаются" -#: lib/malloc/malloc.c:1015 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: вызван с аргументом невыделенного блока" -#: lib/malloc/malloc.c:1030 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" -msgstr "" -"realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами " -"диапазона" +msgstr "realloc: обнаружено отрицательное переполнение; mh_nbytes байт за пределами диапазона" -#: lib/malloc/malloc.c:1036 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: размеры начального и конечного блока отличаются" @@ -1402,22 +1369,22 @@ msgstr "%s: недопустимое указание сетевого пути" msgid "network operations not supported" msgstr "сетевые операции не поддерживаются" -#: locale.c:205 +#: locale.c:200 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: не удаётся изменить язык (%s)" -#: locale.c:207 +#: locale.c:202 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: не удаётся изменить язык (%s): %s" -#: locale.c:272 +#: locale.c:259 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: не удаётся изменить язык (%s)" -#: locale.c:274 +#: locale.c:261 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: не удаётся изменить язык (%s): %s" @@ -1435,151 +1402,145 @@ msgstr "Для вас есть почта в $_" msgid "The mail in %s has been read\n" msgstr "Сообщения в %s были прочитаны\n" -#: make_cmd.c:317 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "синтаксическая ошибка: требуется математическое выражение" -#: make_cmd.c:319 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "синтаксическая ошибка: ожидается «;»" -#: make_cmd.c:320 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "синтаксическая ошибка: «((%s))»" -#: make_cmd.c:572 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document: недопустимый тип инструкции %d" -#: make_cmd.c:657 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" -msgstr "" -"блок here-document в строке %d разделён знаком конца файла (ожидался «%s»)" +msgstr "блок here-document в строке %d разделён знаком конца файла (ожидался «%s»)" -#: make_cmd.c:756 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" -msgstr "" -"make_redirection: инструкция перенаправления «%d» вышла за пределы диапазона" +msgstr "make_redirection: инструкция перенаправления «%d» вышла за пределы диапазона" -#: parse.y:2369 +#: parse.y:2324 #, 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): строка " -"обрезана" +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:2772 +#: parse.y:2700 msgid "maximum here-document count exceeded" msgstr "достигнуто максимальное число переменных here-document" -#: parse.y:3511 parse.y:3881 +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "неожиданный конец файла во время поиска «%c»" -#: parse.y:4581 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "неожиданный конец файла во время поиска «]]»" -#: parse.y:4586 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "синтаксическая ошибка в условном выражении: неожиданный маркер «%s»" -#: parse.y:4590 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "синтаксическая ошибка в условном выражении" -#: parse.y:4668 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "неожиданный маркер «%s», ожидался «)»" -#: parse.y:4672 +#: parse.y:4501 msgid "expected `)'" msgstr "ожидается символ «)»" -#: parse.y:4700 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "неожиданный аргумент «%s» для условного унарного оператора" -#: parse.y:4704 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "неожиданный аргумент для условного унарного оператора" -#: parse.y:4750 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "неожиданный маркер «%s», ожидается условный бинарный оператор" -#: parse.y:4754 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "ожидается условный бинарный оператор" -#: parse.y:4776 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "неожиданный аргумент «%s» для условного бинарного оператора" -#: parse.y:4780 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "неожиданный аргумент для условного бинарного оператора" -#: parse.y:4791 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "неожиданный маркер «%c» в условной команде" -#: parse.y:4794 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "неожиданный маркер «%s» в условной команде" -#: parse.y:4798 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "неожиданный маркер %d в условной команде" -#: parse.y:6220 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "синтаксическая ошибка рядом с неожиданным маркером «%s»" -#: parse.y:6238 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "синтаксическая ошибка рядом с «%s»" -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "синтаксическая ошибка: неожиданный конец файла" -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error" msgstr "синтаксическая ошибка" -#: parse.y:6310 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "Для выхода из командного процессора используйте «%s».\n" -#: parse.y:6472 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "неожиданный конец файла во время поиска «)»" -#: pcomplete.c:1132 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "completion: функция «%s» не найдена" -#: pcomplete.c:1722 +#: pcomplete.c:1646 #, c-format msgid "programmable_completion: %s: possible retry loop" msgstr "programmable_completion: %s: возможен бесконечный цикл повторов" @@ -1589,113 +1550,109 @@ msgstr "programmable_completion: %s: возможен бесконечный ц msgid "progcomp_insert: %s: NULL COMPSPEC" msgstr "progcomp_insert: %s: NULL COMPSPEC" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: неверный соединитель «%d»" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: недопустимый идентификатор файла" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: пустой указатель на файл" -#: print_cmd.c:382 +#: 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:1538 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf: «%c»: недопустимый символ форматирования" -#: redir.c:121 redir.c:167 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "файловый дескриптор за пределами диапазона" -#: redir.c:174 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: неоднозначное перенаправление" -#: redir.c:178 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: не удаётся перезаписать существующий файл" -#: redir.c:183 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: ограниченный режим: не удаётся перенаправить вывод" -#: redir.c:188 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "не удаётся создать временный файл для блока here-document: %s" -#: redir.c:192 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: не удаётся присвоить файловый дескриптор переменной" -#: redir.c:588 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "/dev/(tcp|udp)/host/port не поддерживается без сети" -#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "ошибка перенаправления: не удаётся создать копию файлового дескриптора" -#: shell.c:343 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "не удалось найти /tmp; создайте этот каталог" -#: shell.c:347 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp должен быть допустимым названием каталога" -#: shell.c:798 -msgid "pretty-printing mode ignored in interactive shells" -msgstr "" - -#: shell.c:940 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c: недопустимый параметр" -#: shell.c:1299 +#: shell.c:1282 #, c-format msgid "cannot set uid to %d: effective uid %d" msgstr "не удаётся установить UID %d: эффективный UID %d" -#: shell.c:1306 +#: shell.c:1289 #, c-format msgid "cannot set gid to %d: effective gid %d" msgstr "не удаётся установить GID %d: эффективный GID %d" -#: shell.c:1494 +#: shell.c:1458 msgid "cannot start debugger; debugging mode disabled" msgstr "не удаётся запустить отладчик: режим отладки отключён" -#: shell.c:1608 +#: shell.c:1566 #, c-format msgid "%s: Is a directory" msgstr "%s: это каталог" -#: shell.c:1826 +#: shell.c:1777 msgid "I have no name!" msgstr "Не удаётся определить название" -#: shell.c:1980 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash, версия %s-(%s)\n" -#: shell.c:1981 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1704,55 +1661,49 @@ msgstr "" "Использование:\t%s [длинные параметры GNU] [параметры] ...\n" "\t\t%s [длинные параметры GNU] [параметры] файл_скрипта ...\n" -#: shell.c:1983 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "Длинные параметры GNU:\n" -#: shell.c:1987 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Параметры командного процессора:\n" -#: shell.c:1988 +#: shell.c:1938 msgid "\t-ilrsD or -c command or -O shopt_option\t\t(invocation only)\n" -msgstr "" -"\t-irsD или -c команда или -O короткие_параметры\t\t(только при запуске)\n" +msgstr "\t-irsD или -c команда или -O короткие_параметры\t\t(только при запуске)\n" -#: shell.c:2003 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s или -o параметр\n" -#: shell.c:2009 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" -msgstr "" -"Для получения дополнительных сведений о параметрах командного процессора " -"введите «%s -c \"help set\"».\n" +msgstr "Для получения дополнительных сведений о параметрах командного процессора введите «%s -c \"help set\"».\n" -#: shell.c:2010 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" -msgstr "" -"Для получения дополнительных сведений о встроенных командах введите «%s -c " -"help».\n" +msgstr "Для получения дополнительных сведений о встроенных командах введите «%s -c help».\n" -#: shell.c:2011 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "Для отправки сообщений об ошибках используйте команду «bashbug».\n" -#: shell.c:2013 +#: shell.c:1963 #, c-format msgid "bash home page: \n" msgstr "Домашняя страница bash: \n" -#: shell.c:2014 +#: shell.c:1964 #, c-format msgid "General help using GNU software: \n" -msgstr "" -"Общая справка по использованию программ GNU: \n" +msgstr "Общая справка по использованию программ GNU: \n" -#: sig.c:695 +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d: недопустимая операция" @@ -1926,21 +1877,21 @@ msgstr "Неизвестный номер сигнала" msgid "Unknown Signal #%d" msgstr "Неизвестный номер сигнала %d" -#: subst.c:1450 subst.c:1641 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "неверная подстановка: нет закрывающей «%s» в %s" -#: subst.c:3209 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: не удаётся присвоить список элементу массива" -#: subst.c:5734 subst.c:5750 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "не удаётся создать конвейер для подстановки процесса" -#: subst.c:5796 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "не удаётся создать дочерний процесс для подстановки" @@ -1957,80 +1908,69 @@ msgstr "не удаётся открыть именованный конвейе #: subst.c:5873 #, c-format msgid "cannot duplicate named pipe %s as fd %d" -msgstr "" -"не удаётся скопировать именованный конвейер %s в файловый дескриптор %d" +msgstr "не удаётся скопировать именованный конвейер %s в файловый дескриптор %d" -#: subst.c:5990 +#: subst.c:5959 msgid "command substitution: ignored null byte in input" msgstr "подстановка команды: во входных данных проигнорирован нулевой байт" -#: subst.c:6121 +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "не удаётся создать конвейер для подстановки команды" -#: subst.c:6164 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "не удаётся создать дочерний процесс для подстановки команды" -#: subst.c:6190 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" -msgstr "" -"command_substitute: не удаётся скопировать конвейер в файловый дескриптор 1" +msgstr "command_substitute: не удаётся скопировать конвейер в файловый дескриптор 1" -#: subst.c:6641 subst.c:9483 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: недопустимое название переменной для ссылки на имя" -#: subst.c:6737 subst.c:6755 subst.c:6903 +#: subst.c:6666 subst.c:8351 subst.c:8371 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: недопустимая подстановка" + +#: subst.c:6800 #, c-format msgid "%s: invalid indirect expansion" msgstr "%s: недопустимое непрямое раскрытие" -#: subst.c:6771 subst.c:6910 +#: subst.c:6807 #, c-format msgid "%s: invalid variable name" msgstr "%s: недопустимое имя переменной" -#: subst.c:6962 -#, fuzzy, c-format -msgid "%s: parameter not set" -msgstr "%s: параметр не задан или пустой" - -#: subst.c:6964 +#: subst.c:6854 #, c-format msgid "%s: parameter null or not set" msgstr "%s: параметр не задан или пустой" -#: subst.c:7201 subst.c:7216 +#: subst.c:7089 subst.c:7104 #, c-format msgid "%s: substring expression < 0" msgstr "%s: заданное подстрокой выражение меньше нуля" -#: subst.c:8839 subst.c:8860 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: недопустимая подстановка" - -#: subst.c:8948 +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: такое присвоение невозможно" -#: subst.c:9346 -msgid "" -"future versions of the shell will force evaluation as an arithmetic " -"substitution" -msgstr "" -"в будущих версиях командный процессор оценка будет выполняться как " -"математическая подстановка" +#: subst.c:8802 +msgid "future versions of the shell will force evaluation as an arithmetic substitution" +msgstr "в будущих версиях командный процессор оценка будет выполняться как математическая подстановка" -#: subst.c:9903 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "неверная подстановка: нет закрывающей «`» в %s" -#: subst.c:10907 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "нет совпадений: %s" @@ -2053,111 +1993,105 @@ msgstr "ожидается символ «)»" msgid "`)' expected, found %s" msgstr "ожидается символ «)», обнаружено %s" -#: test.c:282 test.c:748 test.c:751 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: ожидается унарный оператор" -#: test.c:469 test.c:791 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: ожидается бинарный оператор" -#: test.c:873 +#: test.c:869 msgid "missing `]'" msgstr "отсутствует символ «]»" -#: trap.c:216 +#: trap.c:224 msgid "invalid signal number" msgstr "недопустимый номер сигнала" -#: trap.c:379 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: неверное значение в trap_list[%d]: %p" -#: trap.c:383 +#: trap.c:391 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" -msgstr "" -"run_pending_traps: обработчик сигнала — SIG_DFL; повторная отправка %d (%s) " -"самому себе" +msgid "run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +msgstr "run_pending_traps: обработчик сигнала — SIG_DFL; повторная отправка %d (%s) самому себе" -#: trap.c:439 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler: неверный сигнал %d" -#: variables.c:399 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "ошибка импорта определения функции для «%s»" -#: variables.c:801 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "слишком высокий уровень командного процессора (%d); сбрасывается до 1" -#: variables.c:2512 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: в текущей области отсутствует контекст функции" -#: variables.c:2531 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: переменной не может быть присвоено значение" -#: variables.c:3246 +#: variables.c:3043 #, c-format msgid "%s: assigning integer to name reference" msgstr "%s: целое числе присваивается ссылке на имя" -#: variables.c:4149 +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: в текущей области отсутствует контекст функции" -#: variables.c:4437 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s имеет пустую exportstr" -#: variables.c:4442 variables.c:4451 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "недопустимый символ %d в exportstr для %s" -#: variables.c:4457 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "отсутствует «=» в exportstr для %s" -#: variables.c:4911 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" -msgstr "" -"pop_var_context: заголовок shell_variables не является контекстом функции" +msgstr "pop_var_context: заголовок shell_variables не является контекстом функции" -#: variables.c:4924 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: отсутствует контекст global_variables" -#: variables.c:4999 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" -msgstr "" -"pop_scope: заголовок shell_variables не является областью временного " -"окружения" +msgstr "pop_scope: заголовок shell_variables не является областью временного окружения" -#: variables.c:5862 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: не удаётся открыть как ФАЙЛ" -#: variables.c:5867 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: недопустимое значение для дескриптора файла трассировки" -#: variables.c:5912 +#: variables.c:5669 #, c-format msgid "%s: %s: compatibility value out of range" msgstr "%s: %s: значение совместимости за пределами диапазона" @@ -2167,12 +2101,8 @@ msgid "Copyright (C) 2016 Free Software Foundation, Inc." msgstr "© Free Software Foundation, Inc, 2016." #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" -"Лицензия GPLv3+: GNU GPL версии 3 или более поздней \n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "Лицензия GPLv3+: GNU GPL версии 3 или более поздней \n" #: version.c:86 version2.c:86 #, c-format @@ -2181,30 +2111,28 @@ msgstr "GNU bash, версия %s (%s)\n" #: version.c:91 version2.c:91 msgid "This is free software; you are free to change and redistribute it." -msgstr "" -"Это свободное программное обеспечение. Вы можете изменять и распространять " -"его." +msgstr "Это свободное программное обеспечение. Вы можете изменять и распространять его." #: version.c:92 version2.c:92 msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "НИКАКАЯ ГАРАНТИЯ не предоставляется в пределах, допускаемых законом." -#: xmalloc.c:93 +#: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: не удаётся выделить %lu байт (выделено %lu байт)" -#: xmalloc.c:95 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: не удаётся выделить %lu байт" -#: xmalloc.c:165 +#: xmalloc.c:163 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: не удаётся выделить %lu байт (выделено %lu байт)" -#: xmalloc.c:167 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: не удаётся выделить %lu байт" @@ -2218,13 +2146,8 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] имя [имя ...]" #: 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 [-lpvsPSVX] [-m раскладка] [-f файл] [-q имя] [-u name] [-r " -"послед_клавиш] [-x послед_клавиш:команда_shell] [послед_клавиш:фнкц_readline " -"или команда_readline]" +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 [-lpvsPSVX] [-m раскладка] [-f файл] [-q имя] [-u name] [-r послед_клавиш] [-x послед_клавиш:команда_shell] [послед_клавиш:фнкц_readline или команда_readline]" #: builtins.c:56 msgid "break [n]" @@ -2300,9 +2223,7 @@ msgstr "logout [n]" #: builtins.c:105 msgid "fc [-e ename] [-lnr] [first] [last] or fc -s [pat=rep] [command]" -msgstr "" -"fc [-e редактор] [-lnr] [первая] [последняя] или fc -s [шаблон=замена] " -"[команда]" +msgstr "fc [-e редактор] [-lnr] [первая] [последняя] или fc -s [шаблон=замена] [команда]" #: builtins.c:109 msgid "fg [job_spec]" @@ -2321,12 +2242,8 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [шаблон ...]" #: builtins.c:123 -msgid "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " -"[arg...]" -msgstr "" -"history [-c] [-d смещение] [n] или history -anrw [файл] или history -ps " -"аргумент [аргумент...]" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "history [-c] [-d смещение] [n] или history -anrw [файл] или history -ps аргумент [аргумент...]" #: builtins.c:127 msgid "jobs [-lnprs] [jobspec ...] or jobs -x command [args]" @@ -2337,24 +2254,16 @@ msgid "disown [-h] [-ar] [jobspec ... | pid ...]" msgstr "disown [-h] [-ar] [задание ... | pid ...]" #: builtins.c:134 -msgid "" -"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " -"[sigspec]" -msgstr "" -"kill [-s назв_сигнала | -n номер_сигнала | -назв_сигнала] ид_процесса | " -"назв_задания] ... или kill -l [назв_сигнала]" +msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgstr "kill [-s назв_сигнала | -n номер_сигнала | -назв_сигнала] ид_процесса | назв_задания] ... или kill -l [назв_сигнала]" #: builtins.c:136 msgid "let arg [arg ...]" msgstr "let аргумент [аргумент ...]" #: 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 массив] [-d разделитель] [-i текст] [-n число_символов] [-N " -"число_символов] [-p приглашение] [-t тайм-аут] [-u fd] [имя ...]" +msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgstr "read [-ers] [-a массив] [-d разделитель] [-i текст] [-n число_символов] [-N число_символов] [-p приглашение] [-t тайм-аут] [-u fd] [имя ...]" #: builtins.c:140 msgid "return [n]" @@ -2417,8 +2326,7 @@ msgid "umask [-p] [-S] [mode]" msgstr "umask [-p] [-S] [режим]" #: builtins.c:177 -#, fuzzy -msgid "wait [-fn] [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [-n] [идентификатор ...]" #: builtins.c:181 @@ -2446,12 +2354,8 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case СЛОВО in [ШАБЛОН [| ШАБЛОН]...) КОМАНДЫ ;;]... esac" #: builtins.c:194 -msgid "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" -msgstr "" -"if КОМАНДЫ; then КОМАНДЫ; [ elif КОМАНДЫ; then КОМАНДЫ; ]... [ else " -"КОМАНДЫ; ] fi" +msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" +msgstr "if КОМАНДЫ; then КОМАНДЫ; [ elif КОМАНДЫ; then КОМАНДЫ; ]... [ else КОМАНДЫ; ] fi" #: builtins.c:196 msgid "while COMMANDS; do COMMANDS; done" @@ -2487,8 +2391,7 @@ msgstr "[[ выражение ]]" #: builtins.c:212 msgid "variables - Names and meanings of some shell variables" -msgstr "" -"переменные — имена и значения некоторых переменных командного процессора" +msgstr "переменные — имена и значения некоторых переменных командного процессора" #: builtins.c:215 msgid "pushd [-n] [+N | -N | dir]" @@ -2511,44 +2414,24 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v переменная] формат [аргументы]" #: builtins.c:231 -msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-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 суффикс] [имя ...]" +msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-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 суффикс] [имя ...]" #: 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 параметр] [-A действие] [-G глоб_шабл] [-W " -"список_слов] [-F функция] [-C команда] [-X фильтр_шабл] [-P префикс] [-S " -"суффикс] [слово]" +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 суффикс] [слово]" #: builtins.c:239 msgid "compopt [-o|+o option] [-DE] [name ...]" msgstr "compopt [-o|+o параметр] [-DE] [имя ...]" #: builtins.c:242 -msgid "" -"mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C " -"callback] [-c quantum] [array]" -msgstr "" -"mapfile [-d разделитель] [-n число] [-O начало] [-s число] [-t] [-u fd] [-C " -"callback] [-c quantum] [массив]" +msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "mapfile [-d разделитель] [-n число] [-O начало] [-s число] [-t] [-u fd] [-C callback] [-c quantum] [массив]" #: builtins.c:244 -#, fuzzy -msgid "" -"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] [массив]" +msgid "readarray [-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 msgid "" @@ -2565,8 +2448,7 @@ msgid "" " -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" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" "Определение или отображение псевдонимов.\n" @@ -2604,6 +2486,40 @@ msgstr "" #: builtins.c:291 #, fuzzy +#| 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\t\t 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." msgid "" "Set Readline key bindings and variables.\n" " \n" @@ -2615,30 +2531,25 @@ msgid "" " 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" +" 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" +" -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" +" -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" +" -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" @@ -2647,18 +2558,14 @@ msgstr "" "Определение привязок клавиш и переменных readline.\n" " \n" " Привязывает последовательность клавиш функции readline или макросу\n" -" или задаёт переменную readline. Синтаксис аргументов без параметров " -"аналогичен\n" -" синтаксису файла ~/.inputrc, но всё должно передаваться в одном " -"аргументе,\n" +" или задаёт переменную readline. Синтаксис аргументов без параметров аналогичен\n" +" синтаксису файла ~/.inputrc, но всё должно передаваться в одном аргументе,\n" " например bind '\"\\C-x\\C-r\": перечитать-init-файл'.\n" " \n" " Параметры:\n" -" -m раскладка использовать указанную раскладку во время " -"выполнения\n" +" -m раскладка использовать указанную раскладку во время выполнения\n" " данной команды. Допустимые раскладки: emacs,\n" -" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-" -"move,\n" +" emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move,\n" " vi-command и vi-insert.\n" " -l вывести названия функций\n" " -P вывести названия функций и их привязки\n" @@ -2673,19 +2580,16 @@ msgstr "" " -v вывести имена переменных и их значения\n" " в формате для повторного использования\n" " -q имя_функции\t вывести клавиши, вызывающие указанную функцию\n" -" -u имя_функции отвязать все клавиши, привязанные к указанной " -"функции\n" +" -u имя_функции отвязать все клавиши, привязанные к указанной функции\n" " -r посл-клавиш удалить привязку для последовательности клавиш\n" " -f файл прочитать привязки из файла\n" " -x посл-клавиш:кмнд-shell выполнить команду bash, если введена\n" " \t\t\t\tпоследовательность клавиш\n" -" -X\t\t вывести последовательности клавиш, привязанные с помощью -" -"x, и связанные команды\n" +" -X\t\t вывести последовательности клавиш, привязанные с помощью -x, и связанные команды\n" " в формате для повторного использования\n" " \n" " Состояние выхода:\n" -" bind возвращает 0, если был указан допустимый параметр или не возникла " -"ошибка." +" bind возвращает 0, если был указан допустимый параметр или не возникла ошибка." #: builtins.c:330 msgid "" @@ -2699,8 +2603,7 @@ msgid "" msgstr "" "Прерывание цикла for, while или until.\n" " \n" -" Прерывает цикл for, while или until. Если указано N, прерывает N " -"вложенных\n" +" Прерывает цикл for, while или until. Если указано N, прерывает N вложенных\n" " циклов.\n" " \n" " Состояние выхода:\n" @@ -2730,8 +2633,7 @@ msgid "" " \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" +" 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" @@ -2740,14 +2642,11 @@ msgstr "" "Выполнение встроенных команд.\n" " \n" " Выполняет встроенную команду bash с аргументами\n" -" без поиска команды. Это полезно, если нужно переопределить встроенную " -"команду\n" -" как функцию командного процессора, в этой функции нужно выполнить " -"встроенную команду.\n" +" без поиска команды. Это полезно, если нужно переопределить встроенную команду\n" +" как функцию командного процессора, в этой функции нужно выполнить встроенную команду.\n" " \n" " Состояние выхода:\n" -" Возвращает состояние выхода встроенной команды или ложь, если указанная " -"команда bash\n" +" Возвращает состояние выхода встроенной команды или ложь, если указанная команда bash\n" " не является встроенной." #: builtins.c:369 @@ -2767,8 +2666,7 @@ msgid "" msgstr "" "Возвращает контекст вызова текущей подпрограммы.\n" " \n" -" Если выражение не указано, возвращает «$line $filename». Если выражение " -"указано, возвращает\n" +" Если выражение не указано, возвращает «$line $filename». Если выражение указано, возвращает\n" " «$line $subroutine $filename». Эти дополнительные данные можно\n" " использовать для трассировки стека.\n" " \n" @@ -2776,31 +2674,57 @@ msgstr "" " для возврата к текущему кадру. Первый кадр имеет номер 0.\n" " \n" " Состояние выхода:\n" -" Возвращает 0, если командный процессор не выполняет функцию, или " -"выражение\n" +" Возвращает 0, если командный процессор не выполняет функцию, или выражение\n" " является допустимым." #: builtins.c:387 #, fuzzy +#| 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 links in\n" +#| " \tDIR after processing instances of `..'\n" +#| " -P\tuse the physical directory structure without following symbolic\n" +#| " \tlinks: resolve symbolic links in DIR before processing instances\n" +#| " \tof `..'\n" +#| " -e\tif the -P option is supplied, and the current working directory\n" +#| " \tcannot be determined successfully, exit with a non-zero status\n" +#| " -@ on systems that support it, present a file with extended attributes\n" +#| " 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." msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\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" +" 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" +" 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" @@ -2816,31 +2740,25 @@ msgid "" " \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" +" `..' 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" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" "Смена рабочего каталога командного процессора.\n" " \n" -" Изменяет текущий каталог на указанный каталог. Каталог по умолчанию " -"хранится в\n" +" Изменяет текущий каталог на указанный каталог. Каталог по умолчанию хранится в\n" " переменной $HOME командного процессора.\n" " \n" " Переменная $CDPATH определяет путь поиска каталога, содержащего\n" -" указанный каталог. Альтернативные каталоги в $CDPATH разделяются " -"двоеточием (:).\n" -" Пустое название каталога соответствует текущему каталогу. Если каталог " -"начинается\n" +" указанный каталог. Альтернативные каталоги в $CDPATH разделяются двоеточием (:).\n" +" Пустое название каталога соответствует текущему каталогу. Если каталог начинается\n" " с косой черты (/), переменная $CDPATH не используется.\n" " \n" " Если каталог не найден и задан параметр «cdable_vars»,\n" -" слово считается названием переменной. Если эта переменная содержит " -"значение,\n" +" слово считается названием переменной. Если эта переменная содержит значение,\n" " оно используется для каталога.\n" " \n" " Параметры:\n" @@ -2851,24 +2769,32 @@ msgstr "" " \tобработки «..»\n" " -e\tесли указан параметр -P, и не удаётся определить текущий\n" " \tрабочий каталог, команда завершается с ненулевым состоянием\n" -" -@ на системах, которые это поддерживают, представляет файл с " -"расширенными\n" +" -@ на системах, которые это поддерживают, представляет файл с расширенными\n" " атрибутами как каталог, содержащий атрибуты файла\n" " \n" -" По умолчанию выполняется переход по символьным ссылкам (как при указании " -"параметра «-L»).\n" -" «..» обрабатывается путём удаления первого компонента пути до косой " -"черты\n" +" По умолчанию выполняется переход по символьным ссылкам (как при указании параметра «-L»).\n" +" «..» обрабатывается путём удаления первого компонента пути до косой черты\n" " или из начала каталога.\n" " \n" " Состояние выхода:\n" -" Возвращает 0, если каталог был изменён, и если $PWD был успешно " -"установлен\n" -" при использовании параметра -P. В противном случае возвращается " -"ненулевое состояние." +" Возвращает 0, если каталог был изменён, и если $PWD был успешно установлен\n" +" при использовании параметра -P. В противном случае возвращается ненулевое состояние." #: builtins.c:425 #, fuzzy +#| 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" +#| " \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." msgid "" "Print the name of the current working directory.\n" " \n" @@ -2938,12 +2864,26 @@ msgstr "" #: builtins.c:471 #, fuzzy +#| 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\tuse a default value for PATH that is guaranteed to find all of\n" +#| " \tthe standard utilities\n" +#| " -v\tprint a description of COMMAND similar to the `type' builtin\n" +#| " -V\tprint a more verbose description of each COMMAND\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns exit status of COMMAND, or failure if COMMAND is not found." 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" +" 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" @@ -2957,15 +2897,12 @@ msgid "" msgstr "" "Выполнение простой команды или вывод информации о командах.\n" " \n" -" Выполняет команду с аргументами без поиска функции командного " -"процессора\n" -" или выводит информацию об указанных командах. Можно использовать для " -"вызова команд\n" +" Выполняет команду с аргументами без поиска функции командного процессора\n" +" или выводит информацию об указанных командах. Можно использовать для вызова команд\n" " с диска, когда функция с таким именем уже существует.\n" " \n" " Параметры:\n" -" -p\tиспользовать значение по умолчанию для $PATH, чтобы " -"гарантированно\n" +" -p\tиспользовать значение по умолчанию для $PATH, чтобы гарантированно\n" " \tнайти все стандартные команды\n" " -v\tвывести описание команды аналогично встроенной команде «type»\n" " -V\tвывести более подробное описание каждой команды\n" @@ -2975,6 +2912,42 @@ msgstr "" #: builtins.c:490 #, fuzzy +#| 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" +#| " \tsource file when debugging)\n" +#| " -g\tcreate global variables when used in a shell function; otherwise\n" +#| " \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 NAMEs 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" +#| " -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." msgid "" "Set variable values and attributes.\n" " \n" @@ -2993,11 +2966,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 the value of each NAME to lower case on assignment\n" +" -l\tto convert NAMEs 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" +" -u\tto convert NAMEs to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -3005,8 +2978,7 @@ msgid "" " 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" +" 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" @@ -3015,16 +2987,14 @@ msgid "" msgstr "" "Указание значений переменных и атрибутов.\n" " \n" -" Объявление переменных и назначение им атрибутов. Если имена не " -"указаны,\n" +" Объявление переменных и назначение им атрибутов. Если имена не указаны,\n" " выводит атрибуты и значения всех переменных.\n" " \n" " Параметры:\n" " -f\tограничить действие или вывести имена функций и их определения\n" " -F\tвывести только имена функций (а также номер строки\n" " \tв исходном файле при отладке)\n" -" -g\tсоздать глобальные переменные при использовании в функции " -"командного процессора; в противном случае\n" +" -g\tсоздать глобальные переменные при использовании в функции командного процессора; в противном случае\n" " \tигнорируется\n" " -p\tвывести атрибуты и значения каждого имени\n" " \n" @@ -3033,8 +3003,7 @@ msgstr "" " -A\tсделать имена ассоциативными массивами (если поддерживается)\n" " -i\tназначить именам атрибут «integer»\n" " -l\tперевести имена в нижний регистр при назначении\n" -" -n\tсделать имя ссылкой на переменную с именем, соответствующим её " -"значению\n" +" -n\tсделать имя ссылкой на переменную с именем, соответствующим её значению\n" " -r\tотключить запись в имена\n" " -t\tназначить именам атрибут «trace»\n" " -l\tперевести имена в верхний регистр при назначении\n" @@ -3043,11 +3012,9 @@ msgstr "" " Знак «+» вместо «-» отключает указанный атрибут.\n" " \n" " Переменные с атрибутом «integer» содержат математическое выражение (см.\n" -" команду «let»), которое рассчитывается при назначении значения " -"переменной.\n" +" команду «let»), которое рассчитывается при назначении значения переменной.\n" " \n" -" При использовании в функции «declare» делает имена локальными как при " -"использовании\n" +" При использовании в функции «declare» делает имена локальными как при использовании\n" " данной команды. Параметр «-g» отключает это поведение.\n" " \n" " Состояние выхода:\n" @@ -3056,6 +3023,10 @@ msgstr "" #: builtins.c:530 #, fuzzy +#| msgid "" +#| "Set variable values and attributes.\n" +#| " \n" +#| " Obsolete. See `help declare'." msgid "" "Set variable values and attributes.\n" " \n" @@ -3081,26 +3052,52 @@ msgid "" msgstr "" "Определение локальных переменных.\n" " \n" -" Создаёт локальную переменную с указанным именем и присваивает ей " -"указанное значение. Параметром может быть\n" +" Создаёт локальную переменную с указанным именем и присваивает ей указанное значение. Параметром может быть\n" " любой параметр, принимаемый командой «declare».\n" " \n" -" Локальные переменные можно использовать только внутри функции. Они " -"видны\n" +" Локальные переменные можно использовать только внутри функции. Они видны\n" " только той функции, в которой они определены, и её дочерним функциям.\n" " \n" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр, не возникла\n" -" ошибка присвоения переменной или командный процессор не выполняет " -"функцию." +" ошибка присвоения переменной или командный процессор не выполняет функцию." #: 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" +#| " \t0 to 3 octal digits\n" +#| " \\xHH\tthe eight-bit character whose value is HH (hexadecimal). HH\n" +#| " \tcan be one or two hex digits\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns success unless a write error occurs." msgid "" "Write arguments to the standard output.\n" " \n" -" Display the ARGs, separated by a single space character and followed by " -"a\n" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3130,19 +3127,15 @@ msgid "" msgstr "" "Вывод аргументов на стандартный вывод.\n" " \n" -" Выводит аргументы, разделённые пробелом, добавляя в конце символ новой " -"строки,\n" +" Выводит аргументы, разделённые пробелом, добавляя в конце символ новой строки,\n" " на стандартный вывод.\n" " \n" " Параметры:\n" " -n\tне добавлять символ новой строки\n" -" -e\tвключить интерпретацию символов, экранированных обратной косой " -"чертой\n" -" -E\tявно отключить интерпретацию символов, экранированных обратной " -"косой чертой\n" +" -e\tвключить интерпретацию символов, экранированных обратной косой чертой\n" +" -E\tявно отключить интерпретацию символов, экранированных обратной косой чертой\n" " \n" -" echo интерпретирует следующие символы, экранированные обратной косой " -"чертой:\n" +" echo интерпретирует следующие символы, экранированные обратной косой чертой:\n" " \\a\tоповещение (звуковой сигнал)\n" " \\b\tbackspace\n" " \\c\tотключение дальнейшего вывода\n" @@ -3154,11 +3147,9 @@ msgstr "" " \\t\tгоризонтальная табуляция\n" " \\v\tвертикальная табуляция\n" " \\\\\tобратная косая черта\n" -" \\0nnn\tсимвол с ASCII-кодом NNN (восьмеричным) NNN может быть " -"длиной\n" +" \\0nnn\tсимвол с ASCII-кодом NNN (восьмеричным) NNN может быть длиной\n" " \tот 0 до 3 восьмеричных цифр\n" -" \\xHH\tвосьмиразрядный символ, значение которого — HH " -"(шестнадцатеричное) HH\n" +" \\xHH\tвосьмиразрядный символ, значение которого — HH (шестнадцатеричное) HH\n" " \tможет быть одной или двумя шестнадцатеричными цифрами\n" " \n" " Состояние выхода:\n" @@ -3178,8 +3169,7 @@ msgid "" msgstr "" "Вывод аргументов на стандартный вывод.\n" " \n" -" Выводит аргументы на стандартный вывод, добавляя в конце символ новой " -"строки.\n" +" Выводит аргументы на стандартный вывод, добавляя в конце символ новой строки.\n" " \n" " Параметры:\n" " -n\tне добавлять символ новой строки\n" @@ -3215,16 +3205,13 @@ msgid "" msgstr "" "Включение и отключение встроенных команд командного процессора.\n" " \n" -" Включает и отключает команды, встроенные в командный процессор. " -"Отключение позволит\n" -" выполнить команду с диска, название которой совпадает с названием " -"встроенной команды,\n" +" Включает и отключает команды, встроенные в командный процессор. Отключение позволит\n" +" выполнить команду с диска, название которой совпадает с названием встроенной команды,\n" " без указания полного пути к ней.\n" " \n" " Параметры:\n" " -a\tпоказать список встроенных команд и их состояние\n" -" -n\tотключить все указанные имена или вывести список отключённых " -"команд\n" +" -n\tотключить все указанные имена или вывести список отключённых команд\n" " -p\tпоказать список встроенных команд\n" " -s\tпоказать только названия встроенных команд «special» Posix\n" " \n" @@ -3238,15 +3225,13 @@ msgstr "" " а не встроенную в командный процессор, введите «enable -n test».\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если указанное имя не является встроенной командой или " -"не произошла ошибка." +" Возвращает успех, если указанное имя не является встроенной командой или не произошла ошибка." #: builtins.c:634 msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\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" @@ -3309,8 +3294,7 @@ msgstr "" " буквы идёт двоеточие, считается, что у параметра есть аргумент,\n" " который должен быть отделён пробелом.\n" " \n" -" При каждом своём вызове getopts поместит следующий параметр в " -"переменную\n" +" При каждом своём вызове getopts поместит следующий параметр в переменную\n" " $имя, проинициализировав это имя, если оно не существует,\n" " и проиндексирует следующий обрабатываемый аргумент в переменной\n" " $OPTIND. Переменная $OPTIND инициализируется при каждом вызове\n" @@ -3318,40 +3302,51 @@ msgstr "" " getopts помещает этот аргумент в переменную $OPTARG.\n" " \n" " getopts сообщает об ошибках двумя способами. Если первый символ\n" -" в «строке_параметров» является двоеточием, getopts включает режим " -"молчания. В этом\n" +" в «строке_параметров» является двоеточием, getopts включает режим молчания. В этом\n" " режиме сообщения об ошибках не выводятся. Если указан неверный\n" " параметр, getopts помещает символ параметра в переменную $OPTARG. Если\n" " обязательный аргумент не найден, getopts помещает «:» в «имя»\n" -" и задаёт для $OPTARG символ найденного параметра. Если getopts не в " -"режиме\n" +" и задаёт для $OPTARG символ найденного параметра. Если getopts не в режиме\n" " молчания, и был указан неверный параметр, getopts помещает «?»\n" -" в НАЗВАНИЕ и удаляет переменную OPTARG. Если обязательный аргумент не " -"найден, в НАЗВАНИЕ\n" +" в НАЗВАНИЕ и удаляет переменную OPTARG. Если обязательный аргумент не найден, в НАЗВАНИЕ\n" " помещается «?», переменная OPTARG удаляется и выводится диагностическое\n" " сообщение.\n" " \n" " Если переменная OPTERR имеет значение 0, getopts отключает\n" " вывод сообщений об ошибках, даже если первый символ переменной\n" -" OPTSTRING не является двоеточием. По умолчанию переменная OPTERR имеет " -"значение 1.\n" +" OPTSTRING не является двоеточием. По умолчанию переменная OPTERR имеет значение 1.\n" " \n" " Getopts обычно анализирует позиционные параметры ($0–$9), но если\n" " задано больше аргументов, анализируются последние.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если найден параметр. Возвращает ошибку, если " -"достигнут\n" +" Возвращает успех, если найден параметр. Возвращает ошибку, если достигнут\n" " конец параметров или возникла ошибка." #: builtins.c:688 #, fuzzy +#| 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\t\texecute COMMAND with an empty environment\n" +#| " -l\t\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." 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" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3359,20 +3354,16 @@ msgid "" " -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" +" 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." +" Returns success unless COMMAND is not found or a redirection error occurs." msgstr "" "Замена командного процессора указанной командой.\n" " \n" -" Выполняет команду, заменяя текущий командный процессор указанной " -"программой.\n" -" Указанные аргументы становятся аргументами для команды. Если команда не " -"указана,\n" +" Выполняет команду, заменяя текущий командный процессор указанной программой.\n" +" Указанные аргументы становятся аргументами для команды. Если команда не указана,\n" " все перенаправления будет выполняться в текущем командном процессоре.\n" " \n" " Параметры:\n" @@ -3384,8 +3375,7 @@ msgstr "" " закроется (если только на задан «execfail»).\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если команда не была найдена или не возникла ошибка " -"перенаправления." +" Возвращает успех, если команда не была найдена или не возникла ошибка перенаправления." #: builtins.c:709 msgid "" @@ -3403,8 +3393,7 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" "Выход из командного процессора login.\n" @@ -3416,15 +3405,13 @@ msgstr "" 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" +" 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" +" -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" @@ -3438,15 +3425,12 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" Returns success or status of executed command; non-zero if an error occurs." msgstr "" "Отображение или выполнение команд из журнала.\n" " \n" -" fc выводит список команд из журнала или позволяет изменить и повторно " -"выполнить их.\n" -" Аргументы «первая» и «последняя» могут быть числами, определяющими " -"диапазон.\n" +" fc выводит список команд из журнала или позволяет изменить и повторно выполнить их.\n" +" Аргументы «первая» и «последняя» могут быть числами, определяющими диапазон.\n" " Аргумент «первая» также может быть строкой, которая означает\n" " последнюю команду, начинающуюся с этой строки.\n" " \n" @@ -3461,13 +3445,11 @@ msgstr "" " выполняется повторно после замены старая=новая.\n" " \n" " Полезный псевдоним для команды — r='fc -s'. Так если ввести «r cc»,\n" -" будет выполнена последняя команда, начинающаяся с «cc», а если ввести " -"«r»,\n" +" будет выполнена последняя команда, начинающаяся с «cc», а если ввести «r»,\n" " будет выполнена последняя команда.\n" " \n" " Состояние выхода:\n" -" Возвращает успех или состояние выполненной команды. В случае ошибки " -"возвращает ненулевое состояние." +" Возвращает успех или состояние выполненной команды. В случае ошибки возвращает ненулевое состояние." #: builtins.c:758 msgid "" @@ -3487,17 +3469,14 @@ msgstr "" " текущее задание.\n" " \n" " Состояние выхода:\n" -" Возвращает состояние команды, переведённой в интерактивный режим, или " -"ошибку, если возникла ошибка." +" Возвращает состояние команды, переведённой в интерактивный режим, или ошибку, если возникла ошибка." #: builtins.c:773 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" +" 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" @@ -3510,17 +3489,35 @@ msgstr "" " текущего задания.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если не включено управление заданиями или не произошла " -"ошибка." +" Возвращает успех, если не включено управление заданиями или не произошла ошибка." #: builtins.c:787 #, fuzzy +#| 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\t\tforget the remembered location of each NAME\n" +#| " -l\t\tdisplay in a format that may be reused as input\n" +#| " -p pathname\tuse PATHNAME as the full pathname of NAME\n" +#| " -r\t\tforget all remembered locations\n" +#| " -t\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\t\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." 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" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3555,11 +3552,28 @@ msgstr "" " \t\tзапомненных команд.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если команда была найдена или был указан допустимый " -"параметр." +" Возвращает успех, если команда была найдена или был указан допустимый параметр." #: builtins.c:812 #, fuzzy +#| 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" +#| " \tPATTERN\n" +#| " \n" +#| " Arguments:\n" +#| " PATTERN\tPattern specifiying a help topic\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns success unless PATTERN is not found or an invalid option is given." msgid "" "Display information about builtin commands.\n" " \n" @@ -3574,17 +3588,15 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifying a help topic\n" +" PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" "Вывод информации о встроенных командах.\n" " \n" " Показывает краткую справку о встроенных командах. Если указан\n" -" шаблон, выводит подробную справку по всем командам, удовлетворяющим " -"шаблону.\n" +" шаблон, выводит подробную справку по всем командам, удовлетворяющим шаблону.\n" " В противном случае выводится список разделов справки.\n" " \n" " Параметры:\n" @@ -3597,11 +3609,40 @@ msgstr "" " ШАБЛОН\tшаблон, определяющий раздел справки\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был найден шаблон или был указан допустимый " -"параметр." +" Возвращает успех, если был найден шаблон или был указан допустимый параметр." #: builtins.c:836 #, fuzzy +#| 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" +#| " \tlist\n" +#| " -w\twrite the current history to the history file\n" +#| " \tand append them to the history list\n" +#| " \n" +#| " -p\tperform history expansion on each ARG and display the result\n" +#| " \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." msgid "" "Display or manipulate the history list.\n" " \n" @@ -3610,8 +3651,7 @@ 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. Negative\n" -" \t\toffsets count back from the end of the history list\n" +" -d offset\tdelete the history entry at position 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" @@ -3629,8 +3669,7 @@ msgid "" " \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" +" 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." @@ -3638,16 +3677,14 @@ msgstr "" "Отображение или изменение журнала команд.\n" " \n" " Выводит журнал команд с номерами строк и звёздочками (*) перед всеми\n" -" изменёнными записями. С аргументом N показываются только последние N " -"записей.\n" +" изменёнными записями. С аргументом N показываются только последние N записей.\n" " \n" " Параметры:\n" " -c\tочистить журнал, удалив из него все записи\n" " -d смещение\tудалить запись журнала по указанному смещению\n" " \n" " -a\tдобавить журнал текущего сеанса в файл журнала\n" -" -n\tпрочитать все записи, которые ещё не были прочитаны из файла " -"журнала\n" +" -n\tпрочитать все записи, которые ещё не были прочитаны из файла журнала\n" " -r\tпрочитать файл журнала и добавить его содержимое\n" " \tв журнал\n" " -w\tзаписать текущий журнал в файл журнала\n" @@ -3658,21 +3695,38 @@ msgstr "" " -s\tдобавить аргументы в журнал как одну запись\n" " \n" " Если указан файл, он используется как файл журнала. В противном случае\n" -" если $HISTFILE содержит значение, используется этот файл, иначе — файл " -"~/.bash_history.\n" +" если $HISTFILE содержит значение, используется этот файл, иначе — файл ~/.bash_history.\n" " \n" -" Если переменная $HISTTIMEFORMAT задана и не является пустой, её " -"значение\n" +" Если переменная $HISTTIMEFORMAT задана и не является пустой, её значение\n" " используется как строка форматирования для strftime(3) для вывода метки\n" -" времени для каждой показанной записи журнала. В противном случае метки " -"времени не будут показаны.\n" +" времени для каждой показанной записи журнала. В противном случае метки времени не будут показаны.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла " -"ошибка." +" Возвращает успех, если был указан допустимый параметр или не возникла ошибка." -#: builtins.c:873 +#: builtins.c:872 #, fuzzy +#| 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\tlist only processes that have changed status since the last\n" +#| " \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." msgid "" "Display status of jobs.\n" " \n" @@ -3697,14 +3751,11 @@ msgid "" msgstr "" "Отображение состояния заданий.\n" " \n" -" Выводит список активных заданий. Если указан номер задания, выводится " -"только это задание.\n" -" Если не указать параметры, будет показано состояние всех активных " -"заданий.\n" +" Выводит список активных заданий. Если указан номер задания, выводится только это задание.\n" +" Если не указать параметры, будет показано состояние всех активных заданий.\n" " \n" " Параметры:\n" -" -l\tпоказать идентификаторы процессов в дополнение к обычной " -"информации\n" +" -l\tпоказать идентификаторы процессов в дополнение к обычной информации\n" " -n\tпоказать только те процессы, у которых изменилось состояние\n" " \tс момента после последнего уведомления\n" " -p\tпоказать только идентификаторы процессов\n" @@ -3716,12 +3767,25 @@ msgstr "" " лидера группы процессов задания.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла " -"ошибка.\n" +" Возвращает успех, если был указан допустимый параметр или не возникла ошибка.\n" " Если указан параметр -x, возвращает состояние выхода команды." -#: builtins.c:900 +#: builtins.c:899 #, fuzzy +#| 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" +#| " \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." msgid "" "Remove jobs from current shell.\n" " \n" @@ -3751,8 +3815,27 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр или задание." -#: builtins.c:919 +#: builtins.c:918 #, fuzzy +#| 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" +#| " \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." msgid "" "Send a signal to a job.\n" " \n" @@ -3783,29 +3866,24 @@ msgstr "" " Параметры:\n" " -s сигнал\tназвание сигнала\n" " -n сигнал\tномер сигнала\n" -" -l\t\tпоказывает названия сигналов; если после аргументов указано «-" -"l»,\n" -" \tони считаются номерами сигналов, для которых необходимо показать " -"названия\n" +" -l\t\tпоказывает названия сигналов; если после аргументов указано «-l»,\n" +" \tони считаются номерами сигналов, для которых необходимо показать названия\n" " \n" -" kill — это встроенная команда, предназначенная для двух задач: " -"использовать\n" +" kill — это встроенная команда, предназначенная для двух задач: использовать\n" " номера заданий вместо номеров процессов и убивать процессы\n" " при достижении предельного числа процессов.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла " -"ошибка." +" Возвращает успех, если был указан допустимый параметр или не возникла ошибка." -#: builtins.c:943 +#: builtins.c:942 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" +" 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" @@ -3843,11 +3921,9 @@ msgid "" msgstr "" "Расчёт математических выражений.\n" " \n" -" Выполняет расчёт всех аргументов в математическом выражении. Расчёт " -"выполняется\n" +" Выполняет расчёт всех аргументов в математическом выражении. Расчёт выполняется\n" " для целых чисел фиксированной ширины с без проверки на переполнение.\n" -" Однако деление на 0 перехватывается и выдаётся ошибка. Указанные ниже " -"операторы объединены\n" +" Однако деление на 0 перехватывается и выдаётся ошибка. Указанные ниже операторы объединены\n" " в группы с одинаковым приоритетом. Группы перечислены\n" " в порядке уменьшения приоритета.\n" " \n" @@ -3872,10 +3948,8 @@ msgstr "" " \t+=, -=, <<=, >>=,\n" " \t&=, ^=, |=\tприсвоение\n" " \n" -" в качестве операндов можно использовать переменные командного " -"процессора. Название переменной\n" -" заменяется её значением (приводится к целому числу фиксированной " -"ширины)\n" +" в качестве операндов можно использовать переменные командного процессора. Название переменной\n" +" заменяется её значением (приводится к целому числу фиксированной ширины)\n" " в выражении. У переменной не должен быть включён атрибут integer,\n" " чтобы её можно было использовать в выражении.\n" " \n" @@ -3884,38 +3958,74 @@ msgstr "" " выше правила старшинства.\n" " \n" " Состояние выхода:\n" -" Если последний АРГУМЕНТ имеет значение 0, let возвращает 1. В противном " -"случае let возвращает 0." +" Если последний АРГУМЕНТ имеет значение 0, let возвращает 1. В противном случае let возвращает 0." -#: builtins.c:988 +#: builtins.c:987 #, fuzzy +#| 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\t\tuse Readline to obtain the line in an interactive shell\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 NCHARS\n" +#| " \t\tcharacters 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 delimiter\n" +#| " -p prompt\toutput the string PROMPT without a trailing newline before\n" +#| " \t\tattempting to read\n" +#| " -r\t\tdo not allow backslashes to escape any characters\n" +#| " -s\t\tdo not echo input coming from a terminal\n" +#| " -t timeout\ttime out and return failure if a complete line of input is\n" +#| " \t\tnot read within TIMEOUT seconds. The value of the TMOUT\n" +#| " \t\tvariable is the default timeout. TIMEOUT may be a\n" +#| " \t\tfractional number. If TIMEOUT is 0, read returns immediately,\n" +#| " \t\twithout trying to read any data, returning success only if\n" +#| " \t\tinput is available on the specified file descriptor. The\n" +#| " \t\texit status is greater than 128 if the timeout is exceeded\n" +#| " -u fd\t\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." 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" +" 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" +" 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" +" 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" +" -e\tuse Readline to obtain the line in an interactive shell\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" +" -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" @@ -3933,68 +4043,52 @@ msgid "" " -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" +" 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 "" "Чтение строки со стандартного ввода и разделение её на поля.\n" " \n" " Читает одну строку со стандартного ввода или из файлового дескриптора,\n" " если указан параметр -u. Строка разделяется на поля по словам.\n" -" Первое слово присваивается первому указанному имени, второе слово — " -"второму\n" +" Первое слово присваивается первому указанному имени, второе слово — второму\n" " имени и так далее.\n" -" Оставшиеся слова присваиваются последнему указанному имени. В качестве " -"разделителей слов используются только символы\n" +" Оставшиеся слова присваиваются последнему указанному имени. В качестве разделителей слов используются только символы\n" " из переменной $IFS.\n" " \n" -" Если имена не указаны, прочитанная строка сохраняется в переменной " -"$REPLY.\n" +" Если имена не указаны, прочитанная строка сохраняется в переменной $REPLY.\n" " \n" " Параметры:\n" " -a массив\tпоследовательно присвоить прочитанные слова указателям\n" " \t\tмассива, начиная с нуля\n" " -d разделитель\tпродолжить до первого разделителя,\n" " \t\tа не до символа новой строки\n" -" -e\t\tс помощью readline получить строку в интерактивном командном " -"процессоре\n" +" -e\t\tс помощью readline получить строку в интерактивном командном процессоре\n" " -i текст\t\tиспользовать текст в качестве исходного для readline\n" -" -n число_знаков\tвыполнить возврат после прочтения числа знаков, а не " -"ждать\n" -" \t\tсимвола новой строки; учитывать разделитель, если до него было " -"прочитано\n" +" -n число_знаков\tвыполнить возврат после прочтения числа знаков, а не ждать\n" +" \t\tсимвола новой строки; учитывать разделитель, если до него было прочитано\n" " \t\tменьше указанного числа знаков\n" -" -N число_знаков\tвыполнить возврат только после прочтения указанного " -"числа знаков,\n" -" \t\tесли только не был получен конец строки или не истекло время " -"ожидания, игнорируя все разделители\n" +" -N число_знаков\tвыполнить возврат только после прочтения указанного числа знаков,\n" +" \t\tесли только не был получен конец строки или не истекло время ожидания, игнорируя все разделители\n" " -p приглашение\tпоказать приглашение без символа новой строки в конце\n" " \t\tперед тем как читать\n" " -r\t\tне выполнять экранирование символами косой черты\n" " -s\t\tне показывать данные, полученные из терминала\n" -" -t тайм-аут\tпрекратить ожидание и вывести ошибку, если полная " -"входная\n" -" \t\tстрока не была прочитана за указанное число секунд В переменной " -"$TMOUT хранится\n" +" -t тайм-аут\tпрекратить ожидание и вывести ошибку, если полная входная\n" +" \t\tстрока не была прочитана за указанное число секунд В переменной $TMOUT хранится\n" " \t\tзначение тайм-аута по умолчанию. Время ожидания\n" -" \t\tможет быть дробным числом. Если тайм-аут равен 0, read немедленно " -"выполняет возврат,\n" +" \t\tможет быть дробным числом. Если тайм-аут равен 0, read немедленно выполняет возврат,\n" " \t\tне пытаясь прочитать никакие данные. Успех возвращается,\n" -" \t\tтолько если входные данные доступны по указанному файловому " -"дескриптору. \n" +" \t\tтолько если входные данные доступны по указанному файловому дескриптору. \n" " \t\tСостояние выхода больше 128, если время ожидания было превышено.\n" " -u fd\t\tчитать из файлового дескриптора, а не со стандартного входа\n" " \n" " Состояние выхода:\n" -" Состояние выхода будет нулевым, если не был встречен конец файла, не " -"истекло время ожидания\n" -" (в этом случае состояние выхода будет больше 128), не возникла ошибка " -"присвоения переменной\n" +" Состояние выхода будет нулевым, если не был встречен конец файла, не истекло время ожидания\n" +" (в этом случае состояние выхода будет больше 128), не возникла ошибка присвоения переменной\n" " или не был указан недопустимый файловый дескриптор как аргумент для -u." -#: builtins.c:1035 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -4012,11 +4106,91 @@ msgstr "" " последней команды, выполненной в функции или скрипте.\n" " \n" " Состояние выхода:\n" -" Возвращает N или ошибку, если командный процессор не выполняет функцию " -"или скрипт." +" Возвращает N или ошибку, если командный процессор не выполняет функцию или скрипт." -#: builtins.c:1048 +#: builtins.c:1047 #, fuzzy +#| 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." msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -4059,8 +4233,7 @@ msgid "" " 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" +" 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" @@ -4084,8 +4257,7 @@ msgid "" " 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" +" -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" @@ -4101,19 +4273,15 @@ msgid "" " Exit Status:\n" " Returns success unless an invalid option is given." msgstr "" -"Присвоение или удаление значений параметров командного процессора и " -"позиционных параметров.\n" +"Присвоение или удаление значений параметров командного процессора и позиционных параметров.\n" " \n" -" Изменяет значение атрибутов командного процессора и позиционных " -"параметров или\n" +" Изменяет значение атрибутов командного процессора и позиционных параметров или\n" " выводит названия и значения переменных командного процессора.\n" " \n" " Параметры:\n" -" -a пометить переменные, которые были изменены или созданы для " -"экспорта\n" +" -a пометить переменные, которые были изменены или созданы для экспорта\n" " -b немедленно уведомить о завершении задания\n" -" -e немедленно выйти, если команда выполняет выход с ненулевым " -"состоянием\n" +" -e немедленно выйти, если команда выполняет выход с ненулевым состоянием\n" " -f отключить генерацию имён файлов (подстановка)\n" " -h запомнить расположение команд, как они выглядели ранее\n" " -k поместить в окружение для команды все аргументы присвоения,\n" @@ -4124,19 +4292,16 @@ msgstr "" " Задаёт переменную, соответствующую названию параметра:\n" " allexport эквивалент -a\n" " braceexpand эквивалент -B\n" -" emacs использовать стиль emacs для редактирования " -"строк\n" +" emacs использовать стиль emacs для редактирования строк\n" " errexit эквивалент -e\n" " errtrace эквивалент -E\n" " functrace эквивалент -T\n" " hashall эквивалент -h\n" " histexpand эквивалент -H\n" " history включить журнал команд\n" -" ignoreeof не закрывать командный процессор после получения " -"конца файла\n" +" ignoreeof не закрывать командный процессор после получения конца файла\n" " interactive-comments\n" -" разрешить показ комментариев в интерактивных " -"командах\n" +" разрешить показ комментариев в интерактивных командах\n" " keyword эквивалент -k\n" " monitor эквивалент -m\n" " noclobber эквивалент -C\n" @@ -4147,22 +4312,17 @@ msgstr "" " nounset эквивалент -u\n" " onecmd эквивалент -t\n" " physical эквивалент -P\n" -" pipefail возвращаемое значение конвейера является " -"состоянием\n" -" последней команды, завершившейся с ненулевым " -"состоянием,\n" -" или нулём, если не было команды, завершившейся с " -"ненулевым состоянием\n" +" pipefail возвращаемое значение конвейера является состоянием\n" +" последней команды, завершившейся с ненулевым состоянием,\n" +" или нулём, если не было команды, завершившейся с ненулевым состоянием\n" " posix изменить поведение bash там, где операции\n" -" по умолчанию отличаются от стандарта Posix, " -"чтобы\n" +" по умолчанию отличаются от стандарта Posix, чтобы\n" " соответствовать этому стандарту\n" " privileged эквивалент -p\n" " verbose эквивалент -v\n" " vi использовать стиль vi для редактирования строк\n" " xtrace эквивалент -x\n" -" -p Включён, когда реальный и эффективный идентификаторы пользователя " -"не совпадают.\n" +" -p Включён, когда реальный и эффективный идентификаторы пользователя не совпадают.\n" " Отключает обработку файла $ENV и импорт функций командного\n" " процессора. Если отключить этот параметр, эффективные UID и GID\n" " будут назначены реальным UID и GID.\n" @@ -4173,16 +4333,12 @@ msgstr "" " -B Командный процессор развернёт скобки.\n" " -C Если задано, запретить перезапись существующих обычных файлов\n" " вследствие перенаправления вывода.\n" -" -E Если задано, ловушка ERR наследуется функциями командного " -"процессора.\n" -" -H Включить замену журнала с использованием !. По умолчанию этот " -"флаг\n" +" -E Если задано, ловушка ERR наследуется функциями командного процессора.\n" +" -H Включить замену журнала с использованием !. По умолчанию этот флаг\n" " установлен, если командный процессор интерактивный.\n" -" -P Если задано, не разрешать символьные ссылки при выполнении " -"команд,\n" +" -P Если задано, не разрешать символьные ссылки при выполнении команд,\n" " таких как cd, которые изменяют текущий каталог.\n" -" -T Если задано, ловушка DEBUG наследуется функциями командного " -"процессора.\n" +" -T Если задано, ловушка DEBUG наследуется функциями командного процессора.\n" " -- Назначить все оставшиеся аргументы позиционным параметрам.\n" " Если аргументов не осталось, позиционные параметры\n" " удаляются.\n" @@ -4190,18 +4346,34 @@ msgstr "" " Параметры -x и -v выключены.\n" " \n" " Если вместо - указать +, флаги будут выключены. \n" -" Флаги также можно использовать до вызова командного процессора. " -"Текущий\n" -" набор флагов можно просмотреть в $-. Оставшиеся n аргументов являются " -"позиционными\n" +" Флаги также можно использовать до вызова командного процессора. Текущий\n" +" набор флагов можно просмотреть в $-. Оставшиеся n аргументов являются позиционными\n" " параметрами и назначаются в порядке $1, $2, .. $n. Если\n" " аргументы не указаны, выводятся все переменные командного процессора.\n" " \n" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр." -#: builtins.c:1133 +#: builtins.c:1132 #, fuzzy +#| 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" +#| " \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." msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4213,8 +4385,7 @@ msgid "" " -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" +" 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" @@ -4229,27 +4400,23 @@ msgstr "" " Параметры:\n" " -f\tсчитать каждое указанное имя функцией командного процессора\n" " -v\tсчитать каждое указанное имя переменной командного процессора\n" -" -n\tсчитать каждое указанное имя ссылкой на название и удалить саму " -"переменную,\n" +" -n\tсчитать каждое указанное имя ссылкой на название и удалить саму переменную,\n" " \tа не переменную, на которую указывает ссылка\n" " \n" -" Если параметры не указаны, unset сначала пытается удалить переменную. " -"Если это не удаётся,\n" +" Если параметры не указаны, unset сначала пытается удалить переменную. Если это не удаётся,\n" " пытается удалить функцию.\n" " \n" " Некоторые переменные нельзя удалить. См. также «readonly».\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или указанное имя " -"доступно для записи." +" Возвращает успех, если был указан допустимый параметр или указанное имя доступно для записи." -#: builtins.c:1155 +#: builtins.c:1154 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" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4264,8 +4431,7 @@ msgstr "" "Установка атрибута экспорта для переменных командного процессора.\n" " \n" " Помечает все имена для автоматического экспорта в среду для\n" -" последующих выполняемых команд. Если указано значение, оно " -"присваивается перед экспортом.\n" +" последующих выполняемых команд. Если указано значение, оно присваивается перед экспортом.\n" " \n" " Параметры:\n" " -f\tиспользовать функции командного процессора\n" @@ -4277,8 +4443,26 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр или имя." -#: builtins.c:1174 +#: builtins.c:1173 #, fuzzy +#| 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, depending on\n" +#| " 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." msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4301,16 +4485,14 @@ msgstr "" "Запрет изменения переменных командного процессора.\n" " \n" " Делает каждое имя доступным только чтения. Значения этих имён нельзя\n" -" будет изменить в будущем. Если указано значение, присваивает это " -"значение\n" +" будет изменить в будущем. Если указано значение, присваивает это значение\n" " перед тем, как сделать его доступным только для чтения.\n" " \n" " Параметры:\n" " -a\tссылаться на переменные индексированного массива\n" " -A\tссылаться на переменные ассоциативного массива\n" " -f\tиспользовать функции командного процессора\n" -" -p\tвывести список всех переменных или функций, доступных только для " -"чтения,\n" +" -p\tвывести список всех переменных или функций, доступных только для чтения,\n" " в зависимости от того, указан ли параметр -f\n" " \n" " Аргумент «--» отключает дальнейшую обработку параметров.\n" @@ -4318,7 +4500,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый параметр или имя." -#: builtins.c:1196 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4336,7 +4518,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает успех, если N положительный или меньше $#." -#: builtins.c:1208 builtins.c:1223 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4351,18 +4533,16 @@ msgid "" msgstr "" "Выполнение команд из файла в текущем командном процессоре.\n" " \n" -" Читает и выполняет команды из указанного файла в текущем командном " -"процессоре. \n" +" Читает и выполняет команды из указанного файла в текущем командном процессоре. \n" " Файла ищется в каталогах, указанных в переменной $PATH.\n" " Если указаны аргументы, они становятся позиционными параметрами\n" " при выполнении файла.\n" " \n" " Состояние выхода:\n" -" Возвращает состояние последней выполненной команды из файла. Возвращает " -"ошибку,\n" +" Возвращает состояние последней выполненной команды из файла. Возвращает ошибку,\n" " если файл не удаётся прочитать." -#: builtins.c:1239 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4377,21 +4557,94 @@ msgid "" msgstr "" "Приостановка работы командного процессора.\n" " \n" -" Приостанавливает работу текущего командного процессора до получения " -"сигнала SIGCONT.\n" -" Работу командных процессоров login можно приостановить только в " -"принудительном режиме.\n" +" Приостанавливает работу текущего командного процессора до получения сигнала SIGCONT.\n" +" Работу командных процессоров login можно приостановить только в принудительном режиме.\n" " \n" " Параметры:\n" -" -f\tпринудительно приостановить работу, даже если командный " -"процессор — login\n" +" -f\tпринудительно приостановить работу, даже если командный процессор — login\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если не включено управление заданиями или не произошла " -"ошибка." +" Возвращает успех, если не включено управление заданиями или не произошла ошибка." -#: builtins.c:1255 +#: builtins.c:1254 #, fuzzy +#| 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\t True if the shell variable VAR is set\n" +#| " -R VAR\t True if the shell variable VAR is set and is a name 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." msgid "" "Evaluate conditional expression.\n" " \n" @@ -4425,8 +4678,7 @@ msgid "" " -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 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" @@ -4447,8 +4699,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4476,8 +4727,7 @@ msgstr "" "Расчёт условного выражения.\n" " \n" " Возвращает состояние 0 (истина) или 1 (ложь) после\n" -" расчёта выражения. Выражения могут быть унарными или бинарными. " -"Унарные\n" +" расчёта выражения. Выражения могут быть унарными или бинарными. Унарные\n" " выражения часто используются для определения состояния файла. Также\n" " доступны стоковые операторы и операторы сравнения чисел.\n" " \n" @@ -4491,8 +4741,7 @@ msgstr "" " -c ФАЙЛ Истина, если файл представляет символьное устройство.\n" " -d ФАЙЛ Истина, если файл является каталогом.\n" " -e ФАЙЛ Истина, если файл существует.\n" -" -f ФАЙЛ Истина, если файл существует и является обычным " -"файлом.\n" +" -f ФАЙЛ Истина, если файл существует и является обычным файлом.\n" " -g ФАЙЛ Истина, если для файла установлен бит SGID.\n" " -h ФАЙЛ Истина, если файл является символьной ссылкой.\n" " -L ФАЙЛ Истина, если файл является символьной ссылкой.\n" @@ -4501,15 +4750,12 @@ msgstr "" " -r ФАЙЛ Истина, если вы можете прочитать файл.\n" " -s ФАЙЛ Истина, если файл существует и не является пустым.\n" " -S ФАЙЛ Истина, если файл является сокетом.\n" -" -t ФД Истина, если файловый дескриптор ФД открыт в " -"терминале.\n" +" -t ФД Истина, если файловый дескриптор ФД открыт в терминале.\n" " -u ФАЙЛ Истина, если для файла установлен бит SUID.\n" " -w ФАЙЛ Истина, если вы можете выполнить запись в файл.\n" " -x ФАЙЛ Истина, если вы можете выполнить файл.\n" -" -O ФАЙЛ Истина, если вы являетесь эффективным владельцем " -"файла.\n" -" -G ФАЙЛ Истина, если ваша группа является эффективным " -"владельцем файла.\n" +" -O ФАЙЛ Истина, если вы являетесь эффективным владельцем файла.\n" +" -G ФАЙЛ Истина, если ваша группа является эффективным владельцем файла.\n" " -N ФАЙЛ Истина, если файл был изменён после последнего чтения.\n" " \n" " ФАЙЛ1 -nt ФАЙЛ2 Истина, если файл1 новее файла2 (согласно\n" @@ -4517,8 +4763,7 @@ msgstr "" " \n" " ФАЙЛ1 -ot ФАЙЛ2 Истина, если файл1 старее файла2.\n" " \n" -" ФАЙЛ1 -ef ФАЙЛ2 Истина, если файл1 является жёсткой ссылкой на " -"файл2.\n" +" ФАЙЛ1 -ef ФАЙЛ2 Истина, если файл1 является жёсткой ссылкой на файл2.\n" " \n" " Строковые операторы:\n" " \n" @@ -4532,38 +4777,31 @@ msgstr "" " СТРОКА1 != СТРОКА2\n" " Истина, если строки не совпадают.\n" " СТРОКА1 < СТРОКА2\n" -" Истина, если СТРОКА1 сортируется до СТРОКИ2 " -"лексикографически.\n" +" Истина, если СТРОКА1 сортируется до СТРОКИ2 лексикографически.\n" " СТРОКА1 > СТРОКА2\n" -" Истина, если СТРОКА1 сортируется после СТРОКИ2 " -"лексикографически.\n" +" Истина, если СТРОКА1 сортируется после СТРОКИ2 лексикографически.\n" " \n" " Остальные операторы:\n" " \n" " -o ПАРАМЕТР Истина, если параметр командного процессора включён.\n" " -v ПЕР\t Истина, если переменная командного процессора задана\n" -" -R ПЕР\t Истина, если переменная командного процессора задана и " -"является именованной ссылкой.\n" +" -R ПЕР\t Истина, если переменная командного процессора задана и является именованной ссылкой.\n" " ! ВЫРАЖ Истина, если выражение возвращает ложь.\n" " ВЫРАЖ1 -a ВЫРАЖ2 Истина, если оба выражения возвращают истину.\n" -" ВЫРАЖ1 -o ВЫРАЖ2 Истина, если хотя бы одно из выражений возвращает " -"истину.\n" +" ВЫРАЖ1 -o ВЫРАЖ2 Истина, если хотя бы одно из выражений возвращает истину.\n" " \n" -" арг1 ОП арг2 Математические проверки. ОП может быть одним из " -"следующих: -eq, -ne,\n" +" арг1 ОП арг2 Математические проверки. ОП может быть одним из следующих: -eq, -ne,\n" " -lt, -le, -gt или -ge.\n" " \n" -" Математические бинарные операторы возвращают истину, если АРГУМЕНТ1 " -"равен, не равен,\n" +" Математические бинарные операторы возвращают истину, если АРГУМЕНТ1 равен, не равен,\n" " меньше, меньше или равен либо больше или равен\n" " АРГУМЕНТУ2.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если выражение истинно, или ошибку, если выражение " -"ложно\n" +" Возвращает успех, если выражение истинно, или ошибку, если выражение ложно\n" " или указан недопустимый аргумент." -#: builtins.c:1337 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4575,12 +4813,11 @@ msgstr "" " Это синоним встроенной команды test, но последним аргументом должна\n" " быть скобка «]», соответствующая открывающей «[»." -#: builtins.c:1346 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4588,19 +4825,17 @@ msgid "" msgstr "" "Отображение времени процесса.\n" " \n" -" Показывает объединённые значения времени пользователя и системы для " -"командного\n" +" Показывает объединённые значения времени пользователя и системы для командного\n" " процессора и всех его дочерних процессов.\n" " \n" " Состояние выхода:\n" " Всегда возвращает успех." -#: builtins.c:1358 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\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" @@ -4609,34 +4844,26 @@ msgid "" " 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" +" 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" +" 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 or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in 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." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" "Захват сигналов и других событий.\n" " \n" @@ -4644,22 +4871,16 @@ msgstr "" " командный процессор получает сигналы или при других условиях.\n" " \n" " Аргумент — это команда, которая считывается и выполняется, когда\n" -" командный процессор получает указанные сигнал(ы). Если аргумент " -"отсутствует (и указан один сигнал)\n" +" командный процессор получает указанные сигнал(ы). Если аргумент отсутствует (и указан один сигнал)\n" " или указано «-», для всех указанных сигналов восстанавливаются\n" -" исходные значения. Если аргумент — пустая строка, все указанные сигналы " -"игнорируются\n" +" исходные значения. Если аргумент — пустая строка, все указанные сигналы игнорируются\n" " командным процессором и вызываемыми им командами.\n" " \n" -" Если сигнал — EXIT (0), аргумент выполняется при выходе из командного " -"процессора. Если\n" -" сигнал — DEBUG, аргумент выполняется перед каждой простой командой. " -"Если\n" +" Если сигнал — EXIT (0), аргумент выполняется при выходе из командного процессора. Если\n" +" сигнал — DEBUG, аргумент выполняется перед каждой простой командой. Если\n" " сигнал — RETURN, аргумент выполняется каждый раз, когда функция\n" -" или скрипт выполняется в . или исходные встроенные команды завершают " -"свою работу. Сигнал\n" -" ERR означает выполнение аргумента каждый раз, когда ошибка команды " -"приведёт\n" +" или скрипт выполняется в . или исходные встроенные команды завершают свою работу. Сигнал\n" +" ERR означает выполнение аргумента каждый раз, когда ошибка команды приведёт\n" " к выходу из командного процессора, когда включён параметр -e.\n" " \n" " Если аргументы не указаны, trap выводит список команд, связанных\n" @@ -4669,17 +4890,41 @@ msgstr "" " -l\tпоказать названия сигналов и их номера\n" " -p\tпоказать команды trap, связанные с каждым сигналом\n" " \n" -" Идентификатор сигнала — это название сигнала в или номер " -"сигнала.\n" -" Названия сигналов не зависят от регистра, а префикс SIG не является " -"обязательным. \n" +" Идентификатор сигнала — это название сигнала в или номер сигнала.\n" +" Названия сигналов не зависят от регистра, а префикс SIG не является обязательным. \n" " Сигнал можно отправить в командный процессор командой «kill -signal $$».\n" " \n" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый сигнал или параметр." -#: builtins.c:1394 +#: builtins.c:1393 #, fuzzy +#| 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" +#| " \tincludes aliases, builtins, and functions, if and only if\n" +#| " \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" +#| " \tbuiltin, or function, and returns the name of the disk file\n" +#| " \tthat would be executed\n" +#| " -p\treturns either the name of the disk file that would be executed,\n" +#| " \tor nothing if `type -t NAME' would not return `file'.\n" +#| " -t\toutput a single word which is one of `alias', `keyword',\n" +#| " \t`function', `builtin', `file' or `', if NAME is an alias, shell\n" +#| " \treserved word, shell function, shell builtin, disk file, or not\n" +#| " \tfound, 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." msgid "" "Display information about command type.\n" " \n" @@ -4705,30 +4950,25 @@ msgid "" " 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." +" Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" "Вывод информации о типе команды.\n" " \n" -" Для каждого указанного имени показывает, как оно будет интерпретировано " -"при\n" +" Для каждого указанного имени показывает, как оно будет интерпретировано при\n" " использовании в качестве названия команды.\n" " \n" " Параметры:\n" -" -a\tпоказать все местоположения, где есть исполняемый файл с указанным " -"именем,\n" +" -a\tпоказать все местоположения, где есть исполняемый файл с указанным именем,\n" " \tвключая псевдонимы, встроенные команды и функции, а также при условии\n" " \tчто не используется параметр «-p»\n" " -f\tне искать функции командного процессора\n" -" -P\tпринудительно искать в $PATH все указанные имена, даже если это " -"псевдоним,\n" +" -P\tпринудительно искать в $PATH все указанные имена, даже если это псевдоним,\n" " \tвстроенная команда или функция, и возвращать название файла на диске,\n" " \tкоторый будет запущен\n" " -p\tвозвращает название файла на диске, который будет запущен,\n" " \tили ничего, если «type -t имя» не возвращает «file».\n" " -t\tвывести одно из слов «alias», «keyword»,\n" -" \t«function», «builtin», «file» или «», если указанное имя является, " -"соответственно,\n" +" \t«function», «builtin», «file» или «», если указанное имя является, соответственно,\n" " \tпсевдонимом, зарезервированным словом, функцией, встроенной командой\n" " \tкомандного процессора, файлом на диске или имя не было найдено\n" " \n" @@ -4736,16 +4976,57 @@ msgstr "" " ИМЯ\tназвание интерпретируемой команды\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если все указанные имена были найдены, или ошибку в " -"противном случае." +" Возвращает успех, если все указанные имена были найдены, или ошибку в противном случае." -#: builtins.c:1425 +#: builtins.c:1424 #, fuzzy +#| 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" +#| " -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" +#| " -T the 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." msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\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" @@ -4790,8 +5071,7 @@ msgid "" msgstr "" "Изменение ограничений ресурсов командного процессора.\n" " \n" -" Позволяет контролировать ресурсы, доступные командному процессору и " -"создаваемым\n" +" Позволяет контролировать ресурсы, доступные командному процессору и создаваемым\n" " им процессам, в системах, где возможен такой контроль.\n" " \n" " Параметры:\n" @@ -4802,8 +5082,7 @@ msgstr "" " -c\tмаксимальный размер создаваемых core-файлов\n" " -d\tмаксимальный размер сегмента данных процесса\n" " -e\tмаксимальный приоритет планирования («nice»)\n" -" -f\tмаксимальный размер файлов, записываемых командным процессором и " -"его дочерними процессами\n" +" -f\tмаксимальный размер файлов, записываемых командным процессором и его дочерними процессами\n" " -i\tмаксимальное число ожидающих сигналов\n" " -l\tмаксимальный объём, который процесс может заблокировать в памяти\n" " -m\tмаксимальный объём резидентной памяти\n" @@ -4820,24 +5099,20 @@ msgstr "" " \n" " Не все параметры доступны на всех платформах.\n" " \n" -" Если указано ограничение, оно является новым значением для указанного " -"ресурса.\n" +" Если указано ограничение, оно является новым значением для указанного ресурса.\n" " Специальные значения «soft», «hard» и «unlimited» означают,\n" -" соответственно, текущее мягкое ограничение, текущее жёсткое ограничение " -"и отсутствие ограничения.\n" +" соответственно, текущее мягкое ограничение, текущее жёсткое ограничение и отсутствие ограничения.\n" " В противном случае выводится текущее значение указанного ресурса. Если\n" " параметр не указан, подразумевается использование параметра -f.\n" " \n" -" Значения задаются с шагом 1024 байт, кроме параметра -t с шагом в " -"секундах,\n" +" Значения задаются с шагом 1024 байт, кроме параметра -t с шагом в секундах,\n" " параметра -p с шагом 512 байт и параметра -u, представляющего\n" " количество процессов.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла " -"ошибка." +" Возвращает успех, если был указан допустимый параметр или не возникла ошибка." -#: builtins.c:1475 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4856,42 +5131,32 @@ msgid "" msgstr "" "Отображение или указание маски режима для файлов.\n" " \n" -" Задаёт маску РЕЖИМ для файлов, создаваемых пользователем. Если РЕЖИМ не " -"указан,\n" +" Задаёт маску РЕЖИМ для файлов, создаваемых пользователем. Если РЕЖИМ не указан,\n" " выводит текущее значение маски.\n" " \n" -" Если РЕЖИМ начинается с цифры, он интерпретируется как восьмеричное " -"число.\n" -" В противном случае он считается символьной строкой как для команды chmod" -"(1).\n" +" Если РЕЖИМ начинается с цифры, он интерпретируется как восьмеричное число.\n" +" В противном случае он считается символьной строкой как для команды chmod(1).\n" " \n" " Параметры:\n" -" -p\tесли РЕЖИМ не указан, вывести маску, пригодную для повторного " -"использования\n" -" -S\tвывести маску в символьном виде, в противном случае выводится " -"восьмеричное число\n" +" -p\tесли РЕЖИМ не указан, вывести маску, пригодную для повторного использования\n" +" -S\tвывести маску в символьном виде, в противном случае выводится восьмеричное число\n" " \n" " Состояние выхода:\n" " Возвращает успех, если был указан допустимый РЕЖИМ или параметр." -#: builtins.c:1495 -#, fuzzy +#: builtins.c:1494 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" +" 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" +" status is zero. If ID is a 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." @@ -4899,11 +5164,9 @@ msgstr "" "Ожидание завершения задания и возврат состояния выхода.\n" " \n" " Ожидает завершения всех процессов, заданных идентификаторами\n" -" (идентификатор процесса или номер задания), и возвращает их состояние " -"выхода. Если идентификатор\n" +" (идентификатор процесса или номер задания), и возвращает их состояние выхода. Если идентификатор\n" " не указан, ожидает завершения всех активных дочерних процессов\n" -" и возвращает нулевое состояние выхода. Если идентификатор не является " -"номером задания, ожидает завершения\n" +" и возвращает нулевое состояние выхода. Если идентификатор не является номером задания, ожидает завершения\n" " всех процессов в конвейере данного задания.\n" " \n" " Если указан параметр -n, ожидает завершения следующего задания\n" @@ -4913,33 +5176,29 @@ msgstr "" " Возвращает состояние последнего идентификатора. Возвращает ошибку, если\n" " указан недопустимый идентификатор или параметр." -#: builtins.c:1519 +#: builtins.c:1515 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" +" 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" +" Returns the status of the last PID; fails if PID is invalid or an invalid\n" " option is given." msgstr "" "Ожидание завершения процесса и возврат состояния выхода.\n" " \n" -" Ожидает завершения всех процессов, заданных идентификаторами (PID), и " -"возвращает их состояние выхода.\n" +" Ожидает завершения всех процессов, заданных идентификаторами (PID), и возвращает их состояние выхода.\n" " Если идентификатор процесса не указан, ожидает завершения всех активных\n" -" дочерних процессов и возвращает нулевое состояние выхода. PID должен " -"быть идентификатором процесса.\n" +" дочерних процессов и возвращает нулевое состояние выхода. PID должен быть идентификатором процесса.\n" " \n" " Состояние выхода:\n" " Возвращает состояние последнего идентификатора. Возвращает ошибку, если\n" " указан недопустимый идентификатор или параметр." -#: builtins.c:1534 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4955,14 +5214,13 @@ msgstr "" " \n" " Цикл «for» выполняет последовательность команд для каждого элемента\n" " списка. Если операнд «in СЛОВА ...;» отсутствует, подразумевается\n" -" операнд «in \"$@\"». Каждому элементу в списке СЛОВА присваивается ИМЯ и " -"для него\n" +" операнд «in \"$@\"». Каждому элементу в списке СЛОВА присваивается ИМЯ и для него\n" " выполняются КОМАНДЫ.\n" " \n" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1548 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4986,14 +5244,13 @@ msgstr "" " \t\tКОМАНДЫ\n" " \t\t(( ВЫРАЖ3 ))\n" " \tdone\n" -" ВЫРАЖ1, ВЫРАЖ2 и ВЫРАЖ3 — это математические выражения. Если любое из " -"выражений\n" +" ВЫРАЖ1, ВЫРАЖ2 и ВЫРАЖ3 — это математические выражения. Если любое из выражений\n" " не указано, считается, что оно возвращает 1.\n" " \n" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1566 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -5016,26 +5273,20 @@ msgstr "" " \n" " СЛОВА разворачиваются, формируя список слов. \n" " Набор развёрнутых слов выводится в поток ошибок с номерами\n" -" в начале строк. Если операнд «in СЛОВА ...;» отсутствует, " -"подразумевается\n" -" операнд «in \"$@\"». Затем выводится приглашение $PS3 и со стандартного " -"ввода\n" +" в начале строк. Если операнд «in СЛОВА ...;» отсутствует, подразумевается\n" +" операнд «in \"$@\"». Затем выводится приглашение $PS3 и со стандартного ввода\n" " считывается строка. Если строка состоит из номера,\n" " соответствующего одному из показанных слов, этому слову\n" -" присваивается указанное имя. Если строка пустая, будут повторно " -"показаны указанные слова\n" -" и приглашение. Если прочитан символ конца файла, команда завершает свою " -"работу. Если прочитаны\n" -" любые другие значения, указанному имени присваивается пустое значение. " -"Прочитанная строка\n" -" сохраняется в переменную $REPLY. Команды выполняются после каждой " -"выборки,\n" +" присваивается указанное имя. Если строка пустая, будут повторно показаны указанные слова\n" +" и приглашение. Если прочитан символ конца файла, команда завершает свою работу. Если прочитаны\n" +" любые другие значения, указанному имени присваивается пустое значение. Прочитанная строка\n" +" сохраняется в переменную $REPLY. Команды выполняются после каждой выборки,\n" " пока не будет выполнена команда прерывания.\n" " \n" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1587 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -5052,20 +5303,18 @@ msgid "" msgstr "" "Вывод времени, потраченного на выполнение конвейера.\n" " \n" -" Выполняет конвейер и выводит значения реального времени, " -"пользовательского времени\n" +" Выполняет конвейер и выводит значения реального времени, пользовательского времени\n" " и системного времени ЦП, потраченного на выполнения конвейера.\n" " \n" " Параметры:\n" " -p\tпоказать значения времени в формате Posix\n" " \n" -" Для форматирования выходных данных используется значение переменной " -"$TIMEFORMAT.\n" +" Для форматирования выходных данных используется значение переменной $TIMEFORMAT.\n" " \n" " Состояние выхода:\n" " Возвращаемое состояние соответствует состоянию выхода конвейера." -#: builtins.c:1604 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -5083,21 +5332,16 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1616 +#: builtins.c:1612 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" +" 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" +" `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" @@ -5106,20 +5350,17 @@ msgstr "" "Выполнение команд в зависимости от условий.\n" " \n" " Сначала выполняется список «if КОМАНДЫ». Если состояние выхода нулевое,\n" -" выполняется список «then КОМАНДЫ». В противном случае выполняется по " -"очереди\n" +" выполняется список «then КОМАНДЫ». В противном случае выполняется по очереди\n" " все списки «elif КОМАНДЫ», и если их состояние выхода будет нулевым,\n" -" выполнится список «then КОМАНДЫ», и команда if завершится. В противном " -"случае\n" +" выполнится список «then КОМАНДЫ», и команда if завершится. В противном случае\n" " выполнится список «else КОМАНДЫ», если он указан. Состояние выхода всей\n" -" конструкции соответствует состоянию выхода последней выполненной команды " -"или будет нулевым,\n" +" конструкции соответствует состоянию выхода последней выполненной команды или будет нулевым,\n" " если ни одна проверка условия не возвратила истину.\n" " \n" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1633 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -5137,7 +5378,7 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1645 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -5155,8 +5396,18 @@ msgstr "" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1657 +#: builtins.c:1653 #, fuzzy +#| 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." msgid "" "Create a coprocess named NAME.\n" " \n" @@ -5171,22 +5422,19 @@ msgstr "" "Создание дополнительного процесса с указанным именем.\n" " \n" " Выполняет команду асинхронно, когда стандартный вывод и стандартный\n" -" вход команды подключены через конвейер к дескрипторам файлов, которые " -"назначены\n" -" указателям 0 и 1 массива переменных ИМЯ в активном командном " -"процессоре.\n" +" вход команды подключены через конвейер к дескрипторам файлов, которые назначены\n" +" указателям 0 и 1 массива переменных ИМЯ в активном командном процессоре.\n" " Имя по умолчанию — «COPROC».\n" " \n" " Состояние выхода:\n" " Возвращает состояние выхода команды." -#: builtins.c:1671 +#: builtins.c:1667 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" +" 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" @@ -5195,17 +5443,15 @@ msgid "" msgstr "" "Определение функции командного процессора.\n" " \n" -" Создаёт функцию командного процессора с указанным именем. При запуске в " -"качестве простой команды\n" -" ИМЯ выполняет КОМАНДЫ в контексте вызывающего их командного процессора. " -"При вызове ИМЕНИ\n" +" Создаёт функцию командного процессора с указанным именем. При запуске в качестве простой команды\n" +" ИМЯ выполняет КОМАНДЫ в контексте вызывающего их командного процессора. При вызове ИМЕНИ\n" " аргументы передаются в функцию как $1...$n, а функция получает\n" " название $FUNCNAME.\n" " \n" " Состояние выхода:\n" " Возвращает успех, если переменная ИМЯ доступно для записи." -#: builtins.c:1685 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -5217,14 +5463,13 @@ msgid "" msgstr "" "Группировка команд.\n" " \n" -" Выполняет набор команд, объединённых в группу. Это единственный способ " -"перенаправления\n" +" Выполняет набор команд, объединённых в группу. Это единственный способ перенаправления\n" " всего набора команд.\n" " \n" " Состояние выхода:\n" " Возвращает состояние последней выполненной команды." -#: builtins.c:1697 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -5240,17 +5485,15 @@ msgstr "" "Возобновление работы задания в интерактивном режиме.\n" " \n" " Аналогично аргументу JOB_SPEC для команды «fg». Возобновляет\n" -" работу остановленного или фонового задания. Через JOB_SPEC можно задать " -"название\n" -" или номер задания. Если после номера задания указать «&», задание будет " -"переведено\n" +" работу остановленного или фонового задания. Через JOB_SPEC можно задать название\n" +" или номер задания. Если после номера задания указать «&», задание будет переведено\n" " в фоновый режим, как если бы идентификатор задания был указан как\n" " аргумент для команды «bg».\n" " \n" " Состояние выхода:\n" " Возвращает состояние возобновлённого задания." -#: builtins.c:1712 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -5268,16 +5511,13 @@ msgstr "" " Состояние выхода:\n" " Возвращает 1, если выражение равно 0, в противном случае возвращает 0." -#: builtins.c:1724 +#: builtins.c:1720 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" +" 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" @@ -5298,22 +5538,16 @@ msgstr "" "Выполнение условной команды.\n" " \n" " Возвращает состояние 0 или 1 в зависимости от результата расчёта\n" -" условного выражения. Выражения составляются из тех же примитивов, " -"которые используются\n" -" во встроенной команде «test». Их можно объединить с помощью следующих " -"операторов:\n" +" условного выражения. Выражения составляются из тех же примитивов, которые используются\n" +" во встроенной команде «test». Их можно объединить с помощью следующих операторов:\n" " \n" " ( выражение )\tВозвращает значение выражения\n" -" ! выражение\tВозвращает истину, если выражение ложно, в противном " -"случае возвращает ложь\n" -" ВЫРАЖ1 && ВЫРАЖ2\tВозвращает истину, если оба выражения истинны, в " -"противном случае возвращает ложь\n" -" ВЫРАЖ1 || ВЫРАЖ2\tВозвращает истину, если хотя бы одно из выражений " -"истинно, в противном случае возвращает ложь\n" +" ! выражение\tВозвращает истину, если выражение ложно, в противном случае возвращает ложь\n" +" ВЫРАЖ1 && ВЫРАЖ2\tВозвращает истину, если оба выражения истинны, в противном случае возвращает ложь\n" +" ВЫРАЖ1 || ВЫРАЖ2\tВозвращает истину, если хотя бы одно из выражений истинно, в противном случае возвращает ложь\n" " \n" " Если используются операторы «==» и «!=», строка справа от\n" -" оператора используется как шаблон, и выполняется сопоставление по " -"шаблону.\n" +" оператора используется как шаблон, и выполняется сопоставление по шаблону.\n" " Если используется оператор «=~», строка справа от оператора\n" " оценивается как регулярное выражение.\n" " \n" @@ -5323,7 +5557,7 @@ msgstr "" " Состояние выхода:\n" " 0 или 1 в зависимости от значения выражения." -#: builtins.c:1750 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5381,8 +5615,7 @@ msgstr "" " BASH_VERSION\tНомер версии bash.\n" " CDPATH\t\tСписок каталогов, разделённых двоеточиями, для поиска\n" " \t\tв них каталогов, указанных как аргументы для «cd».\n" -" GLOBIGNORE\tСписок шаблонов, разделённых двоеточиями и описывающих имена " -"файлов,\n" +" GLOBIGNORE\tСписок шаблонов, разделённых двоеточиями и описывающих имена файлов,\n" " \t\tкоторые будут игнорироваться при развёртывании пути.\n" " HISTFILE\t\tИмя файла, в котором хранится журнал команд.\n" " HISTFILESIZE\tЧисло строк в файле журнала.\n" @@ -5391,15 +5624,11 @@ msgstr "" " HOME\t\tПолный путь к вашему домашнему каталогу.\n" " HOSTNAME\t\tИмя данной системы.\n" " HOSTTYPE\t\tТип процессора, на котором работает данная версия bash.\n" -" IGNOREEOF\tУправляет действием командного процессора при получении " -"символа\n" -" \t\tсимвола конца файла в качестве единственных входных данных. Если " -"задано, тогда значение\n" +" IGNOREEOF\tУправляет действием командного процессора при получении символа\n" +" \t\tсимвола конца файла в качестве единственных входных данных. Если задано, тогда значение\n" " \t\tявляется числом символов EOF, которые могут быть\n" -" \t\tпрочитаны подряд в пустой строке, после чего командный процессор " -"будет закрыт\n" -" \t\t(по умолчанию — 10). Если не задано, EOF означает конец входных " -"данных.\n" +" \t\tпрочитаны подряд в пустой строке, после чего командный процессор будет закрыт\n" +" \t\t(по умолчанию — 10). Если не задано, EOF означает конец входных данных.\n" " MACHTYPE\t\tСтрока с описанием текущей системы, в которой запущен bash.\n" " MAILCHECK\tКак часто (в секундах) bash проверяет наличие новой почты.\n" " MAILPATH\t\tСписок имён файлов, разделённых двоеточиями, в которых bash\n" @@ -5412,15 +5641,13 @@ msgstr "" " PS1\t\tОсновная строка приглашения.\n" " PS2\t\tДополнительная строка приглашения.\n" " PWD\t\tПолный путь до текущего каталога.\n" -" SHELLOPTS\tСписок включённых параметров командного процессора, " -"разделённых двоеточиями.\n" +" SHELLOPTS\tСписок включённых параметров командного процессора, разделённых двоеточиями.\n" " TERM\t\tНазвание текущего типа терминала.\n" " TIMEFORMAT\tФормат вывода данных о времени, показываемых\n" " \t\tкомандой time.\n" " auto_resume\tНепустое значение означает слово в строке запуска команды,\n" " \t\tкоторое сначала ищется в списке\n" -" \t\tостановленных заданий. Если команда найдена, задание переводится в " -"интерактивный режим.\n" +" \t\tостановленных заданий. Если команда найдена, задание переводится в интерактивный режим.\n" " \t\tЗначение «exact» означает, что слово команды должно\n" " \t\tточно совпадать с командой в списке остановленных заданий. \n" " \t\tЗначение «substring» означает, что слово команды\n" @@ -5431,12 +5658,39 @@ msgstr "" " \t\tподстановку журнала. Обычно это «!». Второй символ\n" " \t\tозначает «быструю подстановку». Обычно это «^». \n" " \t\tТретий символ означает примечание журнала. Обычно это «#».\n" -" HISTIGNORE\tСписок шаблонов, разделённых двоеточиями и описывающих " -"команды,\n" +" HISTIGNORE\tСписок шаблонов, разделённых двоеточиями и описывающих команды,\n" " \t\tкоторые должны быть сохранены в журнале.\n" -#: builtins.c:1807 +#: builtins.c:1803 #, fuzzy +#| 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" +#| " \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.\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns success unless an invalid argument is supplied or the directory\n" +#| " change fails." msgid "" "Add directories to stack.\n" " \n" @@ -5470,8 +5724,7 @@ msgstr "" " \n" " Добавляет каталог в начало стека каталогов или выполняет\n" " ротацию стека, помещая в начало стека текущий рабочий\n" -" каталог. Если аргументы не указаны, меняет местами два первых " -"каталога.\n" +" каталог. Если аргументы не указаны, меняет местами два первых каталога.\n" " \n" " Параметры:\n" " -n\tпредотвращает обычное изменение каталога при добавлении\n" @@ -5495,8 +5748,32 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или удалось\n" " перейти в каталог." -#: builtins.c:1841 +#: builtins.c:1837 #, fuzzy +#| 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" +#| " \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.\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns success unless an invalid argument is supplied or the directory\n" +#| " change fails." msgid "" "Remove directories from stack.\n" " \n" @@ -5546,8 +5823,32 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или удалось\n" " перейти в каталог." -#: builtins.c:1871 +#: builtins.c:1867 #, fuzzy +#| 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" +#| " \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.\n" +#| " \n" +#| " Exit Status:\n" +#| " Returns success unless an invalid option is supplied or an error occurs." msgid "" "Display directory stack.\n" " \n" @@ -5597,17 +5898,15 @@ msgstr "" " \tпоказанного при вызове без параметров, начиная с нуля.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла " -"ошибка." +" Возвращает успех, если был указан допустимый параметр или не возникла ошибка." -#: builtins.c:1902 -#, fuzzy +#: builtins.c:1898 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" +" arguments, list all shell options with an indication of whether or not each\n" +" is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5622,10 +5921,8 @@ msgid "" msgstr "" "Установка и удаление параметров командного процессора.\n" " \n" -" Изменяет настройки указанных параметров командного процессора. Если не " -"указать\n" -" аргумент с параметром, выводит все параметры командного процессора, " -"показывая\n" +" Изменяет настройки указанных параметров командного процессора. Если не указать\n" +" аргумент с параметром, выводит все параметры командного процессора, показывая\n" " какой из них установлен, а какой нет.\n" " \n" " Параметры:\n" @@ -5639,8 +5936,37 @@ msgstr "" " Возвращает успех, если указанный параметр включён. Возвращает ошибку,\n" " если был указан недопустимый параметр или параметр отключён." -#: builtins.c:1923 +#: builtins.c:1919 #, fuzzy +#| 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 output the date-time string resulting from using FMT as a format\n" +#| " 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." msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5648,34 +5974,27 @@ msgid "" " -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" +" 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" +" 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" +" 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" +" %(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" +" 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" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" "Форматирует и выводит аргументы согласно указанному формату.\n" @@ -5686,43 +6005,56 @@ msgstr "" " \n" " ФОРМАТ — это символьная строка, содержащая три типа объектов: простые\n" " символы, которые копируются на стандартный вывод, экранирующие\n" -" последовательности, которые преобразовываются и копируются на " -"стандартный\n" +" последовательности, которые преобразовываются и копируются на стандартный\n" " вывод, и спецификации, которые активируют вывод следующего успешного\n" " аргумента.\n" " \n" -" В дополнение к стандартным спецификациям формата, описанным в printf" -"(1),\n" +" В дополнение к стандартным спецификациям формата, описанным в printf(1),\n" " printf интерпретирует:\n" " \n" -" %b\tразвёртывание экранирующих последовательностей с обратной косой " -"чертой в соответствующий аргумент;\n" -" %q\tзаключение аргумента в кавычки, чтобы его можно было повторно " -"использовать в качестве входных данных для командного процессора;\n" -" %(fmt)T вывод строки дата-время, полученной после использования FMT в " -"качестве\n" +" %b\tразвёртывание экранирующих последовательностей с обратной косой чертой в соответствующий аргумент;\n" +" %q\tзаключение аргумента в кавычки, чтобы его можно было повторно использовать в качестве входных данных для командного процессора;\n" +" %(fmt)T вывод строки дата-время, полученной после использования FMT в качестве\n" " строки форматирования для strftime(3)\n" " \n" -" Если необходимо задействовать все аргументы, формат используется " -"повторно. Если\n" +" Если необходимо задействовать все аргументы, формат используется повторно. Если\n" " аргументов меньше, чем требуется для форматирования, дополнительные\n" " спецификации форматирования интерпретируются как содержащие нулевое\n" " или пустое значение.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла " -"ошибка\n" +" Возвращает успех, если был указан допустимый параметр или не возникла ошибка\n" " записи или присвоения." -#: builtins.c:1957 +#: builtins.c:1953 #, 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" +#| " \tNAMEs are supplied, all completion specifications\n" +#| " -D\tapply the completions and actions as the default for commands\n" +#| " \twithout any specific completion defined\n" +#| " -E\tapply the completions and actions to \"empty\" commands --\n" +#| " \tcompletion attempted on a blank line\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" +#| " \n" +#| " Exit Status:\n" +#| " Returns success unless an invalid option is supplied or an error occurs." 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" +" 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" @@ -5743,14 +6075,12 @@ msgid "" msgstr "" "Определение количества аргументов, завершаемых функцией readline.\n" " \n" -" Для каждого имени нужно указать количество завершаемых аргументов. Если " -"параметры\n" +" Для каждого имени нужно указать количество завершаемых аргументов. Если параметры\n" " не указаны, выводятся существующие спецификации завершения формате\n" " для повторного использования.\n" " \n" " Параметры:\n" -" -p\tвывести существующие спецификации завершения в формате для " -"повторного использования\n" +" -p\tвывести существующие спецификации завершения в формате для повторного использования\n" " -r\tудалить спецификации завершения для каждого имени или,\n" " \tесли имена не указаны, все спецификации\n" " -D\tприменить завершения и действия как стандартные для команд,\n" @@ -5763,16 +6093,14 @@ msgstr "" " высокий приоритет, чем -E.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла " -"ошибка." +" Возвращает успех, если был указан допустимый параметр или не возникла ошибка." -#: builtins.c:1985 +#: builtins.c:1981 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" +" completions. If the optional WORD argument is supplied, matches against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5781,24 +6109,19 @@ msgstr "" "Вывод возможных завершений в зависимости от параметров.\n" " \n" " compgen предназначен для использования в функциях bash, генерирующих\n" -" возможные завершения. Если указан необязательный аргумент слово, " -"выполняет\n" +" возможные завершения. Если указан необязательный аргумент слово, выполняет\n" " сопоставление со сгенерированным словом.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или не возникла " -"ошибка." +" Возвращает успех, если был указан допустимый параметр или не возникла ошибка." -#: builtins.c:2000 +#: builtins.c:1996 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" +" 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" @@ -5822,10 +6145,8 @@ msgstr "" "Изменение или вывод параметров завершения.\n" " \n" " Изменяет параметры завершения для каждого имени или, если имена\n" -" не указаны, для текущего завершения. Если параметры не указаны, " -"выводит\n" -" параметры завершения для каждого имени или текущую спецификацию " -"завершения.\n" +" не указаны, для текущего завершения. Если параметры не указаны, выводит\n" +" параметры завершения для каждого имени или текущую спецификацию завершения.\n" " \n" " Параметры:\n" " \t-o параметр\tзадать параметр завершения для каждого имени\n" @@ -5837,10 +6158,8 @@ msgstr "" " Аргументы:\n" " \n" " Каждое имя ссылается на команду, для которой уже должна быть определена\n" -" спецификация завершения с помощью встроенной команды «complete». Если " -"имена\n" -" не указаны, функция, которая сейчас генерирует завершения, должна " -"вызвать\n" +" спецификация завершения с помощью встроенной команды «complete». Если имена\n" +" не указаны, функция, которая сейчас генерирует завершения, должна вызвать\n" " compopt, и должны измениться параметры для текущего\n" " генератора завершения.\n" " \n" @@ -5848,27 +6167,52 @@ msgstr "" " Возвращает успех, если был указан допустимый параметр или для имени\n" " определена спецификация завершения." -#: builtins.c:2030 +#: builtins.c:2026 #, fuzzy +#| 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" +#| " -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\t\tRemove a trailing newline from each line read.\n" +#| " -u fd\t\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 CALLBACK.\n" +#| " \n" +#| " Arguments:\n" +#| " ARRAY\t\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." 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" +" 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" +" -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" +" -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" @@ -5881,32 +6225,25 @@ msgid "" " 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" +" 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" +" Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" "Чтение строк со стандартного ввода в переменную индексированного массива.\n" " \n" -" Читает строки со стандартного ввода в переменную указанного " -"индексированного массива\n" -" или из указанного файлового дескриптора, если указан параметр -u. " -"Переменная $MAPFILE\n" +" Читает строки со стандартного ввода в переменную указанного индексированного массива\n" +" или из указанного файлового дескриптора, если указан параметр -u. Переменная $MAPFILE\n" " является массивом по умолчанию.\n" " \n" " Параметры:\n" -" -n число\tкопировать указанное число строк Если число равно 0, " -"копируются все строки.\n" -" -O начало\tначать присвоение массиву, начиная с заданного указателя " -"По умолчанию указатель равен 0.\n" +" -n число\tкопировать указанное число строк Если число равно 0, копируются все строки.\n" +" -O начало\tначать присвоение массиву, начиная с заданного указателя По умолчанию указатель равен 0.\n" " -s число \tотбросить указанное число первых строк\n" " -t\t\tудалить завершающие переводы строки изо всех прочитанных строк\n" -" -u fd\t\tчитать строки из файлового дескриптора, а не со стандартного " -"входа\n" +" -u fd\t\tчитать строки из файлового дескриптора, а не со стандартного входа\n" " -C callback\tоценивать callback при чтении каждой строки quantum\n" " -c quantum\tчисло строк, читаемых от каждого вызова до callback\n" " \n" @@ -5914,8 +6251,7 @@ msgstr "" " МАССИВ\t\tназвание переменной массива, используемой для данных файла.\n" " \n" " Если параметр -C указан без -c, quantum по умолчанию равен 5000. Когда\n" -" оценивается callback, он предоставляет указатель на следующий " -"присваиваемый\n" +" оценивается callback, он предоставляет указатель на следующий присваиваемый\n" " элемента массива и на строку, присваиваемую этому элементу,\n" " в качестве дополнительных аргументов.\n" " \n" @@ -5923,11 +6259,10 @@ msgstr "" " операции присвоения.\n" " \n" " Состояние выхода:\n" -" Возвращает успех, если был указан допустимый параметр или массив " -"доступен для записи\n" +" Возвращает успех, если был указан допустимый параметр или массив доступен для записи\n" " и является индексированным." -#: builtins.c:2066 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" @@ -5959,8 +6294,7 @@ msgstr "" #~ msgstr "brace_expand> " #~ msgid "Attempt to free unknown command type `%d'.\n" -#~ msgstr "" -#~ "Попытка освободить память структуры команды неизвестного типа `%d'.\n" +#~ msgstr "Попытка освободить память структуры команды неизвестного типа `%d'.\n" #~ msgid "Report this to %s\n" #~ msgstr "Сообщите об этом по адресу %s\n" @@ -6069,9 +6403,7 @@ msgstr "" #~ msgstr "подстановка команд" #~ msgid "Can't reopen pipe to command substitution (fd %d): %s" -#~ msgstr "" -#~ "Невозможно вновь открыть канал для подстановки команд (файловый " -#~ "дексриптор %d): %s" +#~ msgstr "Невозможно вновь открыть канал для подстановки команд (файловый дексриптор %d): %s" #~ msgid "$%c: unbound variable" #~ msgstr "$%c: не заданы границы" @@ -6089,8 +6421,7 @@ msgstr "" #~ msgstr "[%s: неверный индекс" #~ msgid "xrealloc: cannot reallocate %lu bytes (%lu bytes allocated)" -#~ msgstr "" -#~ "xmalloc: невозможно заново выделить %lu байтов (выделено %lu байтов)" +#~ msgstr "xmalloc: невозможно заново выделить %lu байтов (выделено %lu байтов)" #~ msgid "digits occur in two different argv-elements.\n" #~ msgstr "цифры встречаются в двух разных элементах argv.\n" @@ -6159,50 +6490,40 @@ msgstr "" #~ msgstr "случае, для каждого ИМЕНИ определяется псевдокоманда со ЗНАЧЕНИЕМ." #~ msgid "A trailing space in VALUE causes the next word to be checked for" -#~ msgstr "" -#~ "Если на конце ЗНАЧЕНИЯ есть пробелы, при разворачивании псевдокоманды" +#~ msgstr "Если на конце ЗНАЧЕНИЯ есть пробелы, при разворачивании псевдокоманды" #~ msgid "alias substitution when the alias is expanded. Alias returns" #~ msgstr "следующее слово проверяется на подстановку псевдокоманд. Alias" #~ msgid "true unless a NAME is given for which no alias has been defined." -#~ msgstr "" -#~ "возвращает true, если только не задано ИМЯ, для которого нет псевдокоманд." +#~ msgstr "возвращает true, если только не задано ИМЯ, для которого нет псевдокоманд." -#~ msgid "" -#~ "Remove NAMEs from the list of defined aliases. If the -a option is given," -#~ msgstr "" -#~ "Удаляет ИМЕНА из списка определённых псевдокоманд. Если задан параметр -a," +#~ msgid "Remove NAMEs from the list of defined aliases. If the -a option is given," +#~ msgstr "Удаляет ИМЕНА из списка определённых псевдокоманд. Если задан параметр -a," #~ msgid "then remove all alias definitions." #~ msgstr "удаляет все определения псевдокоманд." #~ msgid "Bind a key sequence to a Readline function, or to a macro. The" -#~ msgstr "" -#~ "Связывает последовательность клавиш с функцией Readline или с макросом." +#~ msgstr "Связывает последовательность клавиш с функцией Readline или с макросом." #~ msgid "syntax is equivalent to that found in ~/.inputrc, but must be" #~ msgstr "Синтаксис тот же, что и в ~/.inputrc, но должен передаваться" -#~ msgid "" -#~ "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." +#~ msgid "passed as a single argument: bind '\"\\C-x\\C-r\": re-read-init-file'." #~ msgstr "одним аргументом: bind '\"\\C-x\\C-r\": re-read-init-file'." #~ msgid "Arguments we accept:" #~ msgstr "Принимаемые аргументы:" -#~ msgid "" -#~ " -m keymap Use `keymap' as the keymap for the duration of this" -#~ msgstr "" -#~ " -m раскладка Использовать во время работы программы указанную" +#~ msgid " -m keymap Use `keymap' as the keymap for the duration of this" +#~ msgstr " -m раскладка Использовать во время работы программы указанную" #~ msgid " command. Acceptable keymap names are emacs," #~ msgstr " раскладку. Допустимые имена раскладок: emacs," -#~ msgid "" -#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," -#~ msgstr "" -#~ " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgid " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," +#~ msgstr " emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move," #~ msgid " vi-command, and vi-insert." #~ msgstr " vi-command и vi-insert." @@ -6213,8 +6534,7 @@ msgstr "" #~ msgid " -P List function names and bindings." #~ msgstr " -P Вывести список имён функций и связей." -#~ msgid "" -#~ " -p List functions and bindings in a form that can be" +#~ msgid " -p List functions and bindings in a form that can be" #~ msgstr " -p Вывести список имён функций и связей в виде," #~ msgid " reused as input." @@ -6226,40 +6546,26 @@ msgstr "" #~ msgid " -f filename Read key bindings from FILENAME." #~ msgstr " -f имя_файла Прочесть связи из файла." -#~ msgid "" -#~ " -q function-name Query about which keys invoke the named function." -#~ msgstr "" -#~ " -q имя_функции Запрос, какие клавиши вызовут указанную функцию." +#~ msgid " -q function-name Query about which keys invoke the named function." +#~ msgstr " -q имя_функции Запрос, какие клавиши вызовут указанную функцию." #~ msgid " -V List variable names and values" #~ msgstr " -V Вывести список имён и значений переменных." -#~ msgid "" -#~ " -v List variable names and values in a form that can" -#~ msgstr "" -#~ " -v Вывести список имён и значений переменных в виде," +#~ msgid " -v List variable names and values in a form that can" +#~ msgstr " -v Вывести список имён и значений переменных в виде," #~ msgid " be reused as input." #~ msgstr " который можно использовать на входе" -#~ msgid "" -#~ " -S List key sequences that invoke macros and their " -#~ "values" -#~ msgstr "" -#~ " -S Вывести список последовательностей клавиш, " -#~ "вызывающих макросы и их значений." +#~ msgid " -S List key sequences that invoke macros and their values" +#~ msgstr " -S Вывести список последовательностей клавиш, вызывающих макросы и их значений." -#~ msgid "" -#~ " -s List key sequences that invoke macros and their " -#~ "values in" -#~ msgstr "" -#~ " -s Вывести список последовательностей клавиш, вызывающих " -#~ "макросы" +#~ msgid " -s List key sequences that invoke macros and their values in" +#~ msgstr " -s Вывести список последовательностей клавиш, вызывающих макросы" #~ msgid " a form that can be reused as input." -#~ msgstr "" -#~ " и их значений в виде, который можно использовать на " -#~ "входе" +#~ msgstr " и их значений в виде, который можно использовать на входе" #~ msgid "Exit from within a FOR, WHILE or UNTIL loop. If N is specified," #~ msgstr "Выйти из цикла FOR, WHILE или UNTIL. Если указано N," @@ -6286,89 +6592,64 @@ msgstr "" #~ msgstr "Изменить текущий каталог на заданный. Переменная $HOME содержит" #~ msgid "default DIR. The variable $CDPATH defines the search path for" -#~ msgstr "" -#~ "каталог по умолчанию. Переменная $CDPATH определяет путь, в котором" +#~ msgstr "каталог по умолчанию. Переменная $CDPATH определяет путь, в котором" #~ msgid "the directory containing DIR. Alternative directory names in CDPATH" -#~ msgstr "" -#~ "ищется каталог, содержащий КАТАЛОГ. Альтернативные каталоги в CDPATH" +#~ msgstr "ищется каталог, содержащий КАТАЛОГ. Альтернативные каталоги в CDPATH" #~ msgid "are separated by a colon (:). A null directory name is the same as" -#~ msgstr "" -#~ "разделяются точкой с запятой (:). Пустое имя каталога -- то же самое," +#~ msgstr "разделяются точкой с запятой (:). Пустое имя каталога -- то же самое," #~ msgid "the current directory, i.e. `.'. If DIR begins with a slash (/)," -#~ msgstr "" -#~ "что текущий каталог, т.е. `.'. Если КАТАЛОГ начинается с дроби (/)," +#~ msgstr "что текущий каталог, т.е. `.'. Если КАТАЛОГ начинается с дроби (/)," #~ msgid "then $CDPATH is not used. If the directory is not found, and the" -#~ msgstr "" -#~ "$CDPATh не используется. Если каталог не найден, и установлен параметр" +#~ msgstr "$CDPATh не используется. Если каталог не найден, и установлен параметр" #~ msgid "shell option `cdable_vars' is set, then try the word as a variable" -#~ msgstr "" -#~ "оболочки `cdable_vars', делается попытка интерпретировать это слово как " -#~ "имя" +#~ msgstr "оболочки `cdable_vars', делается попытка интерпретировать это слово как имя" #~ msgid "name. If that variable has a value, then cd to the value of that" -#~ msgstr "" -#~ "переменной. Если эта переменная имеет значение, каталог меняется на это" +#~ msgstr "переменной. Если эта переменная имеет значение, каталог меняется на это" -#~ msgid "" -#~ "variable. The -P option says to use the physical directory structure" -#~ msgstr "" -#~ "значение. Параметр -P указывает использовать физическую структуру " -#~ "каталогов," +#~ msgid "variable. The -P option says to use the physical directory structure" +#~ msgstr "значение. Параметр -P указывает использовать физическую структуру каталогов," -#~ msgid "" -#~ "instead of following symbolic links; the -L option forces symbolic links" -#~ msgstr "" -#~ "а не следовать символчиеским ссылкам, параметр -L заставляет следовать" +#~ msgid "instead of following symbolic links; the -L option forces symbolic links" +#~ msgstr "а не следовать символчиеским ссылкам, параметр -L заставляет следовать" #~ msgid "to be followed." #~ msgstr "символическим ссылкам." #~ msgid "Print the current working directory. With the -P option, pwd prints" -#~ msgstr "" -#~ "Вывести имя текущего рабочего каталога. С параметром -P pwd выводит" +#~ msgstr "Вывести имя текущего рабочего каталога. С параметром -P pwd выводит" #~ msgid "the physical directory, without any symbolic links; the -L option" -#~ msgstr "" -#~ "физический каталог, без символических ссылок, параметр -L заставляет" +#~ msgstr "физический каталог, без символических ссылок, параметр -L заставляет" #~ msgid "makes pwd follow symbolic links." #~ msgstr "pwd следовать символическим ссылкам." -#~ msgid "" -#~ "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" -#~ msgstr "" -#~ "Выполняет КОМАНДУ с АРГУМЕНТАМИ, игнорируя функции оболочки. Если у вас " -#~ "есть" +#~ msgid "Runs COMMAND with ARGS ignoring shell functions. If you have a shell" +#~ msgstr "Выполняет КОМАНДУ с АРГУМЕНТАМИ, игнорируя функции оболочки. Если у вас есть" #~ msgid "function called `ls', and you wish to call the command `ls', you can" -#~ msgstr "" -#~ "функция оболочки `ls', а вы хотите вызвать команду `ls', можно " -#~ "использовать" +#~ msgstr "функция оболочки `ls', а вы хотите вызвать команду `ls', можно использовать" -#~ msgid "" -#~ "say \"command ls\". If the -p option is given, a default value is used" -#~ msgstr "" -#~ "\"command ls\". Если задан параметр -p, используется значение $PATH" +#~ msgid "say \"command ls\". If the -p option is given, a default value is used" +#~ msgstr "\"command ls\". Если задан параметр -p, используется значение $PATH" -#~ msgid "" -#~ "for PATH that is guaranteed to find all of the standard utilities. If" +#~ msgid "for PATH that is guaranteed to find all of the standard utilities. If" #~ msgstr "по умолчанию, что гарантирует отыскание стандартных утилит. Если" -#~ msgid "" -#~ "the -V or -v option is given, a string is printed describing COMMAND." +#~ msgid "the -V or -v option is given, a string is printed describing COMMAND." #~ msgstr "задан параметр -V или -v, выводится строка, описывающая КОМАНДУ." #~ msgid "The -V option produces a more verbose description." #~ msgstr "Параметр -V создаёт более подробное описание." #~ msgid "Declare variables and/or give them attributes. If no NAMEs are" -#~ msgstr "" -#~ "Объявляет переменные и/или придаёт им атрибуты. Если не заданы ИМЕНА," +#~ msgstr "Объявляет переменные и/или придаёт им атрибуты. Если не заданы ИМЕНА," #~ msgid "given, then display the values of variables instead. The -p option" #~ msgstr "выводит вместо этого значения переменных. Параметр -p выведет" @@ -6412,13 +6693,11 @@ msgstr "" #~ msgid "name only." #~ msgstr "функции." -#~ msgid "" -#~ "Using `+' instead of `-' turns off the given attribute instead. When" +#~ msgid "Using `+' instead of `-' turns off the given attribute instead. When" #~ msgstr "Использование `+' вместо `-' выключает заданный атрибут. При" #~ msgid "used in a function, makes NAMEs local, as with the `local' command." -#~ msgstr "" -#~ "использовании в функции делает ИМЕНа локальными, как команда `local'." +#~ msgstr "использовании в функции делает ИМЕНа локальными, как команда `local'." #~ msgid "Obsolete. See `declare'." #~ msgstr "Устарела. См. `declare'." @@ -6433,8 +6712,7 @@ msgstr "" #~ msgstr "Выводит АРГУМЕНТЫ. Если задано -n, подавляется завершающий переход" #~ msgid "suppressed. If the -e option is given, interpretation of the" -#~ msgstr "" -#~ "на новую строку. Если задан параметр -e, интерпретируются следующие" +#~ msgstr "на новую строку. Если задан параметр -e, интерпретируются следующие" #~ msgid "following backslash-escaped characters is turned on:" #~ msgstr "экранированные символы:" @@ -6472,18 +6750,14 @@ msgstr "" #~ msgid "\t\\num\tthe character whose ASCII code is NUM (octal)." #~ msgstr "\t\\число\tсимвол, восьмеричный ASCII-код которого равен ЧИСЛУ" -#~ msgid "" -#~ "You can explicitly turn off the interpretation of the above characters" +#~ msgid "You can explicitly turn off the interpretation of the above characters" #~ msgstr "Вы можете явно выключить интерпретацию вышеприведённых символов" #~ msgid "with the -E option." #~ msgstr "параметром -E." -#~ msgid "" -#~ "Output the ARGs. If -n is specified, the trailing newline is suppressed." -#~ msgstr "" -#~ "Выводит АРГУМЕНТЫ. Если задано -n, подавляется завершающий переход на " -#~ "новую строку." +#~ msgid "Output the ARGs. If -n is specified, the trailing newline is suppressed." +#~ msgstr "Выводит АРГУМЕНТЫ. Если задано -n, подавляется завершающий переход на новую строку." #~ msgid "Enable and disable builtin shell commands. This allows" #~ msgstr "Включает и блокирует встроенные команды оболочки. Это позволяет" @@ -6492,12 +6766,10 @@ msgstr "" #~ msgstr "использовать внешние команды с теми же именами, что команды" #~ msgid "builtin. If -n is used, the NAMEs become disabled; otherwise" -#~ msgstr "" -#~ "оболочки. При использовании -n ИМЕНА блокируются, в противном случае" +#~ msgstr "оболочки. При использовании -n ИМЕНА блокируются, в противном случае" #~ msgid "NAMEs are enabled. For example, to use the `test' found on your" -#~ msgstr "" -#~ "включаются. Например, чтобы использовать файл `test', а не встроенную" +#~ msgstr "включаются. Например, чтобы использовать файл `test', а не встроенную" #~ msgid "path instead of the shell builtin version, type `enable -n test'." #~ msgstr "в оболочку версию, введите enable -n test'. На системах," @@ -6506,8 +6778,7 @@ msgstr "" #~ msgstr "поддерживающих динамическую загрузку можно использовать параметр -f" #~ msgid "to load new builtins from the shared object FILENAME. The -d" -#~ msgstr "" -#~ "чтобы загрузить новые встроенные команды из разделяемого объекта ФАЙЛ." +#~ msgstr "чтобы загрузить новые встроенные команды из разделяемого объекта ФАЙЛ." #~ msgid "option will delete a builtin previously loaded with -f. If no" #~ msgstr "Параметр -d удаляет команды, загруженные -f. Если имена, кроме" @@ -6516,8 +6787,7 @@ msgstr "" #~ msgstr "как в параметрах, не заданы, или если задан параметр -p, выводится" #~ msgid "of builtins is printed. The -a option means to print every builtin" -#~ msgstr "" -#~ "список встроенных команд. Параметр -a требует вывести все встроенные" +#~ msgstr "список встроенных команд. Параметр -a требует вывести все встроенные" #~ msgid "with an indication of whether or not it is enabled. The -s option" #~ msgstr "команды с информацией, блокированы ли они. Параметр -s выводит" @@ -6528,22 +6798,17 @@ msgstr "" #~ msgid "option displays a list of all disabled builtins." #~ msgstr "всех блокированных встроенных команд." -#~ msgid "" -#~ "Read ARGs as input to the shell and execute the resulting command(s)." -#~ msgstr "" -#~ "Читает АРГУМЕНТЫ как входной текст оболочки и выполняет полученные " -#~ "команды." +#~ msgid "Read ARGs as input to the shell and execute the resulting command(s)." +#~ msgstr "Читает АРГУМЕНТЫ как входной текст оболочки и выполняет полученные команды." #~ msgid "Getopts is used by shell procedures to parse positional parameters." -#~ msgstr "" -#~ "Getopts используется процедурами оболочки для анализа параметров командной" +#~ msgstr "Getopts используется процедурами оболочки для анализа параметров командной" #~ msgid "OPTSTRING contains the option letters to be recognized; if a letter" #~ msgstr "строки. СТРОКА_ПАРАМЕТРОВ содержит буквы параметров, которые нужно" #~ msgid "is followed by a colon, the option is expected to have an argument," -#~ msgstr "" -#~ "распознать. Если за буквой следует двоеточие, параметр должен иметь" +#~ msgstr "распознать. Если за буквой следует двоеточие, параметр должен иметь" #~ msgid "which should be separated from it by white space." #~ msgstr "аргумент, отделённый от него промежутком." @@ -6558,8 +6823,7 @@ msgstr "" #~ msgstr "следующего аргумента в переменную оболочки OPTIND. OPTIND" #~ msgid "variable OPTIND. OPTIND is initialized to 1 each time the shell or" -#~ msgstr "" -#~ "принимает значение 1 при каждом вызове оболочки или скрипта оболочки." +#~ msgstr "принимает значение 1 при каждом вызове оболочки или скрипта оболочки." #~ msgid "a shell script is invoked. When an option requires an argument," #~ msgstr "Если параметр требует аргумента, getopts помещает этот аргумент" @@ -6568,19 +6832,16 @@ msgstr "" #~ msgstr "в переменную оболочки OPTARG." #~ msgid "getopts reports errors in one of two ways. If the first character" -#~ msgstr "" -#~ "getopts сообщает об ошибках одним из двух способов. Если первый символ" +#~ msgstr "getopts сообщает об ошибках одним из двух способов. Если первый символ" #~ msgid "of OPTSTRING is a colon, getopts uses silent error reporting. In" -#~ msgstr "" -#~ "OPTSTRING -- двоеточие, getopts использует бесшумный способ. В этом" +#~ msgstr "OPTSTRING -- двоеточие, getopts использует бесшумный способ. В этом" #~ msgid "this mode, no error messages are printed. If an illegal option is" #~ msgstr "случае сообщения об ошибках не выводятся. Если найден недопустимый" #~ msgid "seen, getopts places the option character found into OPTARG. If a" -#~ msgstr "" -#~ "параметр, getopts помещает найденный символ в OPTARG. Если не найден" +#~ msgstr "параметр, getopts помещает найденный символ в OPTARG. Если не найден" #~ msgid "required argument is not found, getopts places a ':' into NAME and" #~ msgstr "требуемый аргумент, getopts помещает в ИМЯ ':', а в OPTARG --" @@ -6637,8 +6898,7 @@ msgstr "" #~ msgstr "Если файл не может быть запущен, а оболочка не интерактивна," #~ msgid "then the shell exits, unless the variable \"no_exit_on_failed_exec\"" -#~ msgstr "" -#~ "производится выход из оболочки, если только не установлена переменная" +#~ msgstr "производится выход из оболочки, если только не установлена переменная" #~ msgid "is set." #~ msgstr "\"no_exit_on_failed_exec\"" @@ -6646,10 +6906,8 @@ msgstr "" #~ msgid "is that of the last command executed." #~ msgstr "завершения будет таким же, как у последней выполненной команды." -#~ msgid "" -#~ "FIRST and LAST can be numbers specifying the range, or FIRST can be a" -#~ msgstr "" -#~ "ПЕРВАЯ и ПОСЛЕДНЯЯ могут быть числами, ограничивающими диапазон, или" +#~ msgid "FIRST and LAST can be numbers specifying the range, or FIRST can be a" +#~ msgstr "ПЕРВАЯ и ПОСЛЕДНЯЯ могут быть числами, ограничивающими диапазон, или" #~ msgid "string, which means the most recent command beginning with that" #~ msgstr "же ПЕРВАЯ может быть строкой, означающей самую недавнюю команду," @@ -6657,13 +6915,10 @@ msgstr "" #~ msgid "string." #~ msgstr "начинающуюся с этой строки." -#~ msgid "" -#~ " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," -#~ msgstr "" -#~ " -e ИМЯ_РЕДАКТОРА выбирает используемый редактор. По умолчанию FCEDIT," +#~ msgid " -e ENAME selects which editor to use. Default is FCEDIT, then EDITOR," +#~ msgstr " -e ИМЯ_РЕДАКТОРА выбирает используемый редактор. По умолчанию FCEDIT," -#~ msgid "" -#~ " then the editor which corresponds to the current readline editing" +#~ msgid " then the editor which corresponds to the current readline editing" #~ msgstr " затем EDITOR, затем редактор, соответствуюший текущему режиму" #~ msgid " mode, then vi." @@ -6675,14 +6930,11 @@ msgstr "" #~ msgid " -n means no line numbers listed." #~ msgstr " -n не выводить номера строк." -#~ msgid "" -#~ " -r means reverse the order of the lines (making it newest listed " -#~ "first)." +#~ msgid " -r means reverse the order of the lines (making it newest listed first)." #~ msgstr " -r вывести строки в обратном порядке (в начале самые новые)." #~ msgid "With the `fc -s [pat=rep ...] [command]' format, the command is" -#~ msgstr "" -#~ "В формате `fc -s [шаблон=замена] [команда] команда выполняется заново" +#~ msgstr "В формате `fc -s [шаблон=замена] [команда] команда выполняется заново" #~ msgid "re-executed after the substitution OLD=NEW is performed." #~ msgstr "после того, как произведена подстановка." @@ -6694,8 +6946,7 @@ msgstr "" #~ msgstr "команду, начинающуюся с `cc', а `r' заново выполняет последнюю" #~ msgid "Place JOB_SPEC in the foreground, and make it the current job. If" -#~ msgstr "" -#~ "Возвращает задачу с указанным номером из фонового режима и делает её" +#~ msgstr "Возвращает задачу с указанным номером из фонового режима и делает её" #~ msgid "JOB_SPEC is not present, the shell's notion of the current job is" #~ msgstr "текущей задачей. Если номер не задан, используется представление" @@ -6704,12 +6955,10 @@ msgstr "" #~ msgstr "оболочки о текущей задаче." #~ msgid "Place JOB_SPEC in the background, as if it had been started with" -#~ msgstr "" -#~ "Переводит задачу с указанным номером в фоновый режим, как если бы она" +#~ msgstr "Переводит задачу с указанным номером в фоновый режим, как если бы она" #~ msgid "`&'. If JOB_SPEC is not present, the shell's notion of the current" -#~ msgstr "" -#~ "была запущена с `&'. Если номер не задан, используется представление" +#~ msgstr "была запущена с `&'. Если номер не задан, используется представление" #~ msgid "job is used." #~ msgstr "оболочки о текущей задаче." @@ -6726,17 +6975,14 @@ msgstr "" #~ msgid "option causes the shell to forget all remembered locations. If no" #~ msgstr "список положений в памяти. Если аргументы не заданы, выводится" -#~ msgid "" -#~ "arguments are given, information about remembered commands is displayed." +#~ msgid "arguments are given, information about remembered commands is displayed." #~ msgstr "информация о запомненных командах." #~ msgid "Display helpful information about builtin commands. If PATTERN is" -#~ msgstr "" -#~ "Вывести полезную информацию о встроенных командах. Если задан ШАБЛОН," +#~ msgstr "Вывести полезную информацию о встроенных командах. Если задан ШАБЛОН," #~ msgid "specified, gives detailed help on all commands matching PATTERN," -#~ msgstr "" -#~ "вывести подробную справку по всем командам, соответствующим ШАБЛОНУ," +#~ msgstr "вывести подробную справку по всем командам, соответствующим ШАБЛОНУ," #~ msgid "otherwise a list of the builtins is printed." #~ msgstr "в противном случае вывести список встроенных команд." @@ -6745,18 +6991,15 @@ msgstr "" #~ msgstr "Вывести историю команд в виде списка с номерами строк. Изменённые" #~ msgid "with a `*' have been modified. Argument of N says to list only" -#~ msgstr "" -#~ "строки помечаются символом `*'. Аргумент N указывает выводить только" +#~ msgstr "строки помечаются символом `*'. Аргумент N указывает выводить только" #~ msgid "the last N lines. The -c option causes the history list to be" #~ msgstr "последние N строк. Параметр -c очищает историю команд, удаляя" -#~ msgid "" -#~ "cleared by deleting all of the entries. The `-w' option writes out the" +#~ msgid "cleared by deleting all of the entries. The `-w' option writes out the" #~ msgstr "все строки. Параметр `-w' записывает текущую историю в указанный" -#~ msgid "" -#~ "current history to the history file; `-r' means to read the file and" +#~ msgid "current history to the history file; `-r' means to read the file and" #~ msgstr "файл; `-r' читает такой файл и дополняет его содержимым историю" #~ msgid "append the contents to the history list instead. `-a' means" @@ -6783,8 +7026,7 @@ msgstr "" #~ msgid "the history list as a single entry. The -p option means to perform" #~ msgstr "Параметр -p выполняет развёртывание каждого АРГУМЕНТА и выводит" -#~ msgid "" -#~ "history expansion on each ARG and display the result, without storing" +#~ msgid "history expansion on each ARG and display the result, without storing" #~ msgstr "результат, не сохраняя ничего в списке истории команд." #~ msgid "anything in the history list." @@ -6796,53 +7038,41 @@ msgstr "" #~ msgid "to the normal information; the -p option lists process id's only." #~ msgstr "идентификаторы процессов: параметр -p выодит только идентификаторы." -#~ msgid "" -#~ "If -n is given, only processes that have changed status since the last" +#~ msgid "If -n is given, only processes that have changed status since the last" #~ msgstr "Если задано -n, выводятся только процессы, статус которых изменился" -#~ msgid "" -#~ "notification are printed. JOBSPEC restricts output to that job. The" -#~ msgstr "" -#~ "со времени последнего уведомления. Если задан номер задачи, выводится" +#~ msgid "notification are printed. JOBSPEC restricts output to that job. The" +#~ msgstr "со времени последнего уведомления. Если задан номер задачи, выводится" #~ msgid "-r and -s options restrict output to running and stopped jobs only," #~ msgstr "только она. Параметры -r и -s выводит только работающие или только" #~ msgid "respectively. Without options, the status of all active jobs is" -#~ msgstr "" -#~ "остановленные задачи соответственно. Без параметров выодится статус" +#~ msgstr "остановленные задачи соответственно. Без параметров выодится статус" -#~ msgid "" -#~ "printed. If -x is given, COMMAND is run after all job specifications" -#~ msgstr "" -#~ "всех активных задач. Если задано -x, в КОМАНДЕ вместо всех АРГУМЕНТОВ" +#~ msgid "printed. If -x is given, COMMAND is run after all job specifications" +#~ msgstr "всех активных задач. Если задано -x, в КОМАНДЕ вместо всех АРГУМЕНТОВ" -#~ msgid "" -#~ "that appear in ARGS have been replaced with the process ID of that job's" +#~ msgid "that appear in ARGS have been replaced with the process ID of that job's" #~ msgstr "(номеров задач) подставляется идентификатор лидера соответствующей" #~ msgid "process group leader." #~ msgstr "группы процессов, и КОМАНДА выполняется." #~ msgid "Removes each JOBSPEC argument from the table of active jobs." -#~ msgstr "" -#~ "Удаляет все задачи, заданные спецификациями в аргументе, из таблицы задач." +#~ msgstr "Удаляет все задачи, заданные спецификациями в аргументе, из таблицы задач." #~ msgid "Send the processes named by PID (or JOB) the signal SIGSPEC. If" -#~ msgstr "" -#~ "Посылает указанным процессам (заданным PID или спецификацией) сигнал" +#~ msgstr "Посылает указанным процессам (заданным PID или спецификацией) сигнал" -#~ msgid "" -#~ "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" +#~ msgid "SIGSPEC is not present, then SIGTERM is assumed. An argument of `-l'" #~ msgstr "SIGSPEC. Если отсутствует SIGSPEC, посылается SIGTERM. Аргументом" #~ msgid "lists the signal names; if arguments follow `-l' they are assumed to" -#~ msgstr "" -#~ "параметра `-l' служит список сигналов. Если он присутствует, выводятся" +#~ msgstr "параметра `-l' служит список сигналов. Если он присутствует, выводятся" #~ msgid "be signal numbers for which names should be listed. Kill is a shell" -#~ msgstr "" -#~ "названия сигналов с этими номерами. Kill является встроенной командой" +#~ msgstr "названия сигналов с этими номерами. Kill является встроенной командой" #~ msgid "builtin for two reasons: it allows job IDs to be used instead of" #~ msgstr "оболочки по двум причинам: она позволяет использовать номера задач," @@ -6850,16 +7080,14 @@ msgstr "" #~ msgid "process IDs, and, if you have reached the limit on processes that" #~ msgstr "а не процессов, и если вы исчерпаете лимит созданных процессов," -#~ msgid "" -#~ "you can create, you don't have to start a process to kill another one." +#~ msgid "you can create, you don't have to start a process to kill another one." #~ msgstr "вы не сможете запустить новый процесс, уничтожающий один из старых." #~ msgid "Each ARG is an arithmetic expression to be evaluated. Evaluation" #~ msgstr "Каждый аргумент рассматривается как арифметическое выражение." #~ msgid "is done in long integers with no check for overflow, though division" -#~ msgstr "" -#~ "Вычисление производится над длинными целыми без контроля переполнения," +#~ msgstr "Вычисление производится над длинными целыми без контроля переполнения," #~ msgid "by 0 is trapped and flagged as an error. The following list of" #~ msgstr "хотя деление на ноль отслеживается и считается ошибкой. Операции в" @@ -6948,61 +7176,47 @@ msgstr "" #~ msgid "One line is read from the standard input, and the first word is" #~ msgstr "Со стандартного ввода считывается одна строка, первое её слово" -#~ msgid "" -#~ "assigned to the first NAME, the second word to the second NAME, and so" +#~ msgid "assigned to the first NAME, the second word to the second NAME, and so" #~ msgstr "становится значением первого ИМЕНИ, второе -- второго ИМЕНИ и т.д." -#~ msgid "" -#~ "on, with leftover words assigned to the last NAME. Only the characters" -#~ msgstr "" -#~ "Последнему ИМЕНИ присваивается весь остаток строки. Разделителями слов" +#~ msgid "on, with leftover words assigned to the last NAME. Only the characters" +#~ msgstr "Последнему ИМЕНИ присваивается весь остаток строки. Разделителями слов" #~ msgid "found in $IFS are recognized as word delimiters. The return code is" #~ msgstr "считаются только символы, входящие в $IFS. Код возврата равен нулю," -#~ msgid "" -#~ "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" +#~ msgid "zero, unless end-of-file is encountered. If no NAMEs are supplied, the" #~ msgstr "за исключением случая, если встретился конец файла. Если ИМЕНА не" -#~ msgid "" -#~ "line read is stored in the REPLY variable. If the -r option is given," -#~ msgstr "" -#~ "заданы, прочитанная строка помещается в переменную REPLY. Если задан" +#~ msgid "line read is stored in the REPLY variable. If the -r option is given," +#~ msgstr "заданы, прочитанная строка помещается в переменную REPLY. Если задан" #~ msgid "this signifies `raw' input, and backslash escaping is disabled. If" -#~ msgstr "" -#~ "параметр -r, это означает `сырой' ввод, т.е. символ \\ не экранирует" +#~ msgstr "параметр -r, это означает `сырой' ввод, т.е. символ \\ не экранирует" #~ msgid "the `-p' option is supplied, the string supplied as an argument is" -#~ msgstr "" -#~ "символы. Если задано `-p', перед чтением на вывод в качестве аргумента" +#~ msgstr "символы. Если задано `-p', перед чтением на вывод в качестве аргумента" -#~ msgid "" -#~ "output without a trailing newline before attempting to read. If -a is" -#~ msgstr "" -#~ "подаётся заданная строка (без завершающего символа перевода строки)." +#~ msgid "output without a trailing newline before attempting to read. If -a is" +#~ msgstr "подаётся заданная строка (без завершающего символа перевода строки)." -#~ msgid "" -#~ "supplied, the words read are assigned to sequential indices of ARRAY," +#~ msgid "supplied, the words read are assigned to sequential indices of ARRAY," #~ msgstr "Если задано -a, прочитанные слова становятся значениями элементов" #~ msgid "starting at zero. If -e is supplied and the shell is interactive," -#~ msgstr "" -#~ "МАССИВА, начиная с нулевого. Если задано -c и оболочка интерактивна," +#~ msgstr "МАССИВА, начиная с нулевого. Если задано -c и оболочка интерактивна," #~ msgid "readline is used to obtain the line." #~ msgstr "чтобы получить строку используется readline." -#~ msgid "" -#~ "Causes a function to exit with the return value specified by N. If N" +#~ msgid "Causes a function to exit with the return value specified by N. If N" #~ msgstr "Заставляет функцию завершить работу с кодом возврата, заданным N." #~ msgid "is omitted, the return status is that of the last command." #~ msgstr "Если N опущено, им становится код возврата последней команды." #~ msgid " -a Mark variables which are modified or created for export." -#~ msgstr "" -#~ " -a Экспортировать переменные, которые изменялись или создавались." +#~ msgstr " -a Экспортировать переменные, которые изменялись или создавались." #~ msgid " -b Notify of job termination immediately." #~ msgstr " -b Немедленно выводить сообщения о завершении задач." @@ -7016,8 +7230,7 @@ msgstr "" #~ msgid " -h Remember the location of commands as they are looked up." #~ msgstr " -h Запоминать расположение обработанных команд." -#~ msgid "" -#~ " -i Force the shell to be an \"interactive\" one. Interactive shells" +#~ msgid " -i Force the shell to be an \"interactive\" one. Interactive shells" #~ msgstr " -i Сделать оболочку \"интерактивной\". Интерактивные оболочки" #~ msgid " always read `~/.bashrc' on startup." @@ -7048,8 +7261,7 @@ msgstr "" #~ msgstr " braceexpand то же, что -B" #~ msgid " emacs use an emacs-style line editing interface" -#~ msgstr "" -#~ " emacs использовать стиль редактирования строк emacs" +#~ msgstr " emacs использовать стиль редактирования строк emacs" #~ msgid " errexit same as -e" #~ msgstr " errexit то же, что -e" @@ -7066,10 +7278,8 @@ msgstr "" #~ msgid " interactive-comments" #~ msgstr " interactive-comments" -#~ msgid "" -#~ " allow comments to appear in interactive commands" -#~ msgstr "" -#~ " допускает комментарии в интерактивных командах" +#~ msgid " allow comments to appear in interactive commands" +#~ msgstr " допускает комментарии в интерактивных командах" #~ msgid " keyword same as -k" #~ msgstr " keyword то же, что -k" @@ -7098,12 +7308,10 @@ msgstr "" #~ msgid " physical same as -P" #~ msgstr " physical то же, что -P" -#~ msgid "" -#~ " posix change the behavior of bash where the default" +#~ msgid " posix change the behavior of bash where the default" #~ msgstr " posix привести поведение bash, по умолчанию не" -#~ msgid "" -#~ " operation differs from the 1003.2 standard to" +#~ msgid " operation differs from the 1003.2 standard to" #~ msgstr " соответствующее стандарту 1003.2, в" #~ msgid " match the standard" @@ -7121,18 +7329,14 @@ msgstr "" #~ msgid " xtrace same as -x" #~ msgstr " xtrace то же, что -x" -#~ msgid "" -#~ " -p Turned on whenever the real and effective user ids do not match." -#~ msgstr "" -#~ " -p Если реальный и эффективный uid не совпадают, включается всегда." +#~ msgid " -p Turned on whenever the real and effective user ids do not match." +#~ msgstr " -p Если реальный и эффективный uid не совпадают, включается всегда." #~ msgid " Disables processing of the $ENV file and importing of shell" #~ msgstr " Отключает обработку файла $ENV и импорт функций оболочки." -#~ msgid "" -#~ " functions. Turning this option off causes the effective uid and" -#~ msgstr "" -#~ " При выключении этого параметра эффективные uid и gid становятся" +#~ msgid " functions. Turning this option off causes the effective uid and" +#~ msgstr " При выключении этого параметра эффективные uid и gid становятся" #~ msgid " gid to be set to the real uid and gid." #~ msgstr " равными реальным." @@ -7141,8 +7345,7 @@ msgstr "" #~ msgstr " -t Завершить работу после чтения и выполнения одной команды." #~ msgid " -u Treat unset variables as an error when substituting." -#~ msgstr "" -#~ " -u При подстановке считать не установленные переменные ошибками." +#~ msgstr " -u При подстановке считать не установленные переменные ошибками." #~ msgid " -v Print shell input lines as they are read." #~ msgstr " -v Выводить прочитанные строки входного текста оболочки." @@ -7166,8 +7369,7 @@ msgstr "" #~ msgstr " обычных файлов при перенаправлении вывода." #~ msgid " -P If set, do not follow symbolic links when executing commands" -#~ msgstr "" -#~ " -P Не следовать символическим ссылкам при выполнении таких команд," +#~ msgstr " -P Не следовать символическим ссылкам при выполнении таких команд," #~ msgid " such as cd which change the current directory." #~ msgstr " как cd, т.е. изменяющих текущий каталог." @@ -7176,11 +7378,9 @@ msgstr "" #~ msgstr "Использование + вместо - отключает флаг. Эти флаги могут также" #~ msgid "flags can also be used upon invocation of the shell. The current" -#~ msgstr "" -#~ "использоваться при запуске оболочки. Текущий набор флагов содержится" +#~ msgstr "использоваться при запуске оболочки. Текущий набор флагов содержится" -#~ msgid "" -#~ "set of flags may be found in $-. The remaining n ARGs are positional" +#~ msgid "set of flags may be found in $-. The remaining n ARGs are positional" #~ msgstr "в $-. Остальные n аргументов -- позиционные параметры, и им, по" #~ msgid "parameters and are assigned, in order, to $1, $2, .. $n. If no" @@ -7193,8 +7393,7 @@ msgstr "" #~ msgstr "Для каждого ИМЕНИ удаляет соответствующую переменную или функцию." #~ msgid "the `-v', unset will only act on variables. Given the `-f' flag," -#~ msgstr "" -#~ "Если задано -v, unset влияет только на переменные, если -f -- только" +#~ msgstr "Если задано -v, unset влияет только на переменные, если -f -- только" #~ msgid "unset will only act on functions. With neither flag, unset first" #~ msgstr "на функции. Без флагов unset в первую очередь пытается удалить" @@ -7202,8 +7401,7 @@ msgstr "" #~ msgid "tries to unset a variable, and if that fails, then tries to unset a" #~ msgstr "переменную, если это не удаётся -- функцию. Некоторые переменные" -#~ msgid "" -#~ "function. Some variables (such as PATH and IFS) cannot be unset; also" +#~ msgid "function. Some variables (such as PATH and IFS) cannot be unset; also" #~ msgstr "(такие как PATH и IFS) не могут быть удалены. См." #~ msgid "see readonly." @@ -7230,24 +7428,19 @@ msgstr "" #~ msgid "processing." #~ msgstr "параметров." -#~ msgid "" -#~ "The given NAMEs are marked readonly and the values of these NAMEs may" -#~ msgstr "" -#~ "Заданные ИМЕНА помечаются только для чтения, и значения этих ИМЁН не" +#~ msgid "The given NAMEs are marked readonly and the values of these NAMEs may" +#~ msgstr "Заданные ИМЕНА помечаются только для чтения, и значения этих ИМЁН не" #~ msgid "not be changed by subsequent assignment. If the -f option is given," -#~ msgstr "" -#~ "могут изменяться в последующих присваиваниях. Если задан параметр -f," +#~ msgstr "могут изменяться в последующих присваиваниях. Если задан параметр -f," #~ msgid "then functions corresponding to the NAMEs are so marked. If no" #~ msgstr "так помечаются функции с соответствующими ИМЕНАМИ. Если аргументы" -#~ msgid "" -#~ "arguments are given, or if `-p' is given, a list of all readonly names" +#~ msgid "arguments are given, or if `-p' is given, a list of all readonly names" #~ msgstr "не заданы, или если задано `-p', выводится список имён только для" -#~ msgid "" -#~ "is printed. An argument of `-n' says to remove the readonly property" +#~ msgid "is printed. An argument of `-n' says to remove the readonly property" #~ msgstr "чтения. Аргумент `-n' указывает снять свойство `только для чтения'" #~ msgid "from subsequent NAMEs. The `-a' option means to treat each NAME as" @@ -7256,10 +7449,8 @@ msgstr "" #~ msgid "an array variable. An argument of `--' disables further option" #~ msgstr "как массив. Аргумент `--' прекращает дальнейшую обработку" -#~ msgid "" -#~ "The positional parameters from $N+1 ... are renamed to $1 ... If N is" -#~ msgstr "" -#~ "Позиционные параметры начиная с $N+1 переобозначаются как $1,... Если" +#~ msgid "The positional parameters from $N+1 ... are renamed to $1 ... If N is" +#~ msgstr "Позиционные параметры начиная с $N+1 переобозначаются как $1,... Если" #~ msgid "not given, it is assumed to be 1." #~ msgstr "N не задано, оно предполагается равным 1." @@ -7298,8 +7489,7 @@ msgstr "" #~ msgstr " -b ФАЙЛ Истина, если файл -- специальный блочный файл." #~ msgid " -c FILE True if file is character special." -#~ msgstr "" -#~ " -c ФАЙл Истина, если файл -- специальный символьный файл." +#~ msgstr " -c ФАЙл Истина, если файл -- специальный символьный файл." #~ msgid " -d FILE True if file is a directory." #~ msgstr " -d ФАЙЛ Истина, если файл -- каталог." @@ -7308,23 +7498,19 @@ msgstr "" #~ msgstr " -e ФАЙЛ Истина, если файл существует." #~ msgid " -f FILE True if file exists and is a regular file." -#~ msgstr "" -#~ " -f ФАЙЛ Истина, если файл существует и является обычным файлом." +#~ msgstr " -f ФАЙЛ Истина, если файл существует и является обычным файлом." #~ msgid " -g FILE True if file is set-group-id." #~ msgstr " -g ФАЙЛ Истина, если у файла установлен атрибут SGID." #~ msgid " -h FILE True if file is a symbolic link. Use \"-L\"." -#~ msgstr "" -#~ " -h ФАЙЛ Истина, если файл -- символическая ссылка. Используйте " -#~ "\"-L\"." +#~ msgstr " -h ФАЙЛ Истина, если файл -- символическая ссылка. Используйте \"-L\"." #~ msgid " -L FILE True if file is a symbolic link." #~ msgstr " -L ФАЙЛ Истина, если файл -- символическая ссылка." #~ msgid " -k FILE True if file has its \"sticky\" bit set." -#~ msgstr "" -#~ " -k ФАЙЛ Истина, если у файла устанолвен \"бит привязчивости\"." +#~ msgstr " -k ФАЙЛ Истина, если у файла устанолвен \"бит привязчивости\"." #~ msgid " -p FILE True if file is a named pipe." #~ msgstr " -p ФАЙЛ Истина, если файл -- именованный канал." @@ -7339,9 +7525,7 @@ msgstr "" #~ msgstr " -S ФАЙЛ Истина, если файл -- сокет." #~ msgid " -t FD True if FD is opened on a terminal." -#~ msgstr "" -#~ " -t FD Истина, если файл с дескриптором FD связан с " -#~ "терминалом." +#~ msgstr " -t FD Истина, если файл с дескриптором FD связан с терминалом." #~ msgid " -u FILE True if the file is set-user-id." #~ msgstr " -u ФАЙЛ Истина, если у файла установлен атрибут SUID." @@ -7355,14 +7539,11 @@ msgstr "" #~ msgid " -O FILE True if the file is effectively owned by you." #~ msgstr " -O ФАЙЛ Истина, если вы -- эффективный владелец файла." -#~ msgid "" -#~ " -G FILE True if the file is effectively owned by your group." -#~ msgstr "" -#~ " -G ФАЙЛ Истина, если ваша группа -- эффективная группа файла." +#~ msgid " -G FILE True if the file is effectively owned by your group." +#~ msgstr " -G ФАЙЛ Истина, если ваша группа -- эффективная группа файла." #~ msgid " FILE1 -nt FILE2 True if file1 is newer than (according to" -#~ msgstr "" -#~ " ФАЙЛ1 -nt ФАЙЛ2 Истина, если файл1 более новый (по дате последнего" +#~ msgstr " ФАЙЛ1 -nt ФАЙЛ2 Истина, если файл1 более новый (по дате последнего" #~ msgid " modification date) file2." #~ msgstr " изменения), чем файл2." @@ -7400,20 +7581,14 @@ msgstr "" #~ msgid " STRING1 < STRING2" #~ msgstr " СТРОКА1 < СТРОКА2" -#~ msgid "" -#~ " True if STRING1 sorts before STRING2 lexicographically" -#~ msgstr "" -#~ " Истина, если СТРОКА1 лексикографически стоит раньше " -#~ "СТРОКИ2" +#~ msgid " True if STRING1 sorts before STRING2 lexicographically" +#~ msgstr " Истина, если СТРОКА1 лексикографически стоит раньше СТРОКИ2" #~ msgid " STRING1 > STRING2" #~ msgstr " СТРОКА1 > СТРОКА2" -#~ msgid "" -#~ " True if STRING1 sorts after STRING2 lexicographically" -#~ msgstr "" -#~ " Истина, если СТРОКА1 лексикографически стоит позже " -#~ "СТРОКИ2" +#~ msgid " True if STRING1 sorts after STRING2 lexicographically" +#~ msgstr " Истина, если СТРОКА1 лексикографически стоит позже СТРОКИ2" #~ msgid "Other operators:" #~ msgstr "Прочие операции:" @@ -7434,11 +7609,9 @@ msgstr "" #~ msgstr " -lt, -le, -gt или -ge." #~ msgid "Arithmetic binary operators return true if ARG1 is equal, not-equal," -#~ msgstr "" -#~ "Бинарные арифметические операции возвращают истину, если АРГ1 равен," +#~ msgstr "Бинарные арифметические операции возвращают истину, если АРГ1 равен," -#~ msgid "" -#~ "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" +#~ msgid "less-than, less-than-or-equal, greater-than, or greater-than-or-equal" #~ msgstr "не равен, меньше, меньше или равен, больше или больше или равен" #~ msgid "than ARG2." @@ -7457,27 +7630,22 @@ msgstr "" #~ msgstr "запущенных из оболочки." #~ msgid "The command ARG is to be read and executed when the shell receives" -#~ msgstr "" -#~ "Команда АРГ должна быть прочитана и выполнена при получении оболочкой" +#~ msgstr "Команда АРГ должна быть прочитана и выполнена при получении оболочкой" #~ msgid "signal(s) SIGNAL_SPEC. If ARG is absent all specified signals are" -#~ msgstr "" -#~ "указанного(ых) сигнала(ов). Если АРГ не задан, все указанные сигналы" +#~ msgstr "указанного(ых) сигнала(ов). Если АРГ не задан, все указанные сигналы" #~ msgid "reset to their original values. If ARG is the null string each" -#~ msgstr "" -#~ "обрабатываются обработчиками по умолчанию. Если АРГ -- пустая строка," +#~ msgstr "обрабатываются обработчиками по умолчанию. Если АРГ -- пустая строка," #~ msgid "SIGNAL_SPEC is ignored by the shell and by the commands it invokes." -#~ msgstr "" -#~ "все указанные сигналы будут игнорироваться оболочкой и вызываемыми ей" +#~ msgstr "все указанные сигналы будут игнорироваться оболочкой и вызываемыми ей" #~ msgid "If SIGNAL_SPEC is EXIT (0) the command ARG is executed on exit from" #~ msgstr "командами. Если задан сигнал EXIT (0), команда АРГ выполняется при" #~ msgid "the shell. If SIGNAL_SPEC is DEBUG, ARG is executed after every" -#~ msgstr "" -#~ "выходе из оболочки, если DEBUG, АРГ выполняется при выполнении каждой" +#~ msgstr "выходе из оболочки, если DEBUG, АРГ выполняется при выполнении каждой" #~ msgid "command. If ARG is `-p' then the trap commands associated with" #~ msgstr "команды. Если АРГ -- `-p', выводятся команды, связанные с заданными" @@ -7488,12 +7656,10 @@ msgstr "" #~ msgid "only `-p' is given, trap prints the list of commands associated with" #~ msgstr "trap выводит список команд, связанных со всеми сигналами. Сигнал" -#~ msgid "" -#~ "each signal number. SIGNAL_SPEC is either a signal name in " +#~ msgid "each signal number. SIGNAL_SPEC is either a signal name in " #~ msgstr "задаётся либо своим именем в , либо номером. `trap -l'" -#~ msgid "" -#~ "or a signal number. `trap -l' prints a list of signal names and their" +#~ msgid "or a signal number. `trap -l' prints a list of signal names and their" #~ msgstr "выводит список имён сигналов и соответствующих им номеров." #~ msgid "corresponding numbers. Note that a signal can be sent to the shell" @@ -7508,33 +7674,26 @@ msgstr "" #~ msgid "If the -t option is used, returns a single word which is one of" #~ msgstr "Если задан параметр -t, возвращает слово -- `alias', `keyword'," -#~ msgid "" -#~ "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" +#~ msgid "`alias', `keyword', `function', `builtin', `file' or `', if NAME is an" #~ msgstr "`function', `builtin', `file' или `' -- если, соответственно, ИМЯ" -#~ msgid "" -#~ "alias, shell reserved word, shell function, shell builtin, disk file," +#~ msgid "alias, shell reserved word, shell function, shell builtin, disk file," #~ msgstr "является псевдокомандой, зарезервированным словом, функцией, или" #~ msgid "or unfound, respectively." #~ msgstr "встроенной командой оболочки, дисковым файлом или не найдено." #~ msgid "If the -p flag is used, either returns the name of the disk file" -#~ msgstr "" -#~ "При использовании флага -p либо возвращается имя выполняемого дискового " -#~ "файла," +#~ msgstr "При использовании флага -p либо возвращается имя выполняемого дискового файла," #~ msgid "that would be executed, or nothing if -t would not return `file'." #~ msgstr "либо ничего, если -t вернуло бы значение, отличное от `file'" #~ msgid "If the -a flag is used, displays all of the places that contain an" -#~ msgstr "" -#~ "При использовании флага -a выводится расположение всех исполняемых файлов" +#~ msgstr "При использовании флага -a выводится расположение всех исполняемых файлов" -#~ msgid "" -#~ "executable named `file'. This includes aliases and functions, if and" -#~ msgstr "" -#~ "с указанным именем. Если одновременно не используется флаг -p и только" +#~ msgid "executable named `file'. This includes aliases and functions, if and" +#~ msgstr "с указанным именем. Если одновременно не используется флаг -p и только" #~ msgid "only if the -p flag is not also used." #~ msgstr "тогда, выводятся также псевдокоманды и функции." @@ -7594,19 +7753,16 @@ msgstr "" #~ msgstr " -v\tразмер виртуальной памяти" #~ msgid "If LIMIT is given, it is the new value of the specified resource." -#~ msgstr "" -#~ "Если задано ОГРАНИЧЕНИЕ, оно задёт новое значение для указанного ресурса." +#~ msgstr "Если задано ОГРАНИЧЕНИЕ, оно задёт новое значение для указанного ресурса." #~ msgid "Otherwise, the current value of the specified resource is printed." -#~ msgstr "" -#~ "В противном случае выводится текущее значение для указанного ресурса." +#~ msgstr "В противном случае выводится текущее значение для указанного ресурса." #~ msgid "If no option is given, then -f is assumed. Values are in 1k" #~ msgstr "Если параметры не заданы, предполагается, что задано -f. Значения" #~ msgid "increments, except for -t, which is in seconds, -p, which is in" -#~ msgstr "" -#~ "измеряются в КБ, кроме -t, измеряемого в секундах, -p, единица измерения" +#~ msgstr "измеряются в КБ, кроме -t, измеряемого в секундах, -p, единица измерения" #~ msgid "increments of 512 bytes, and -u, which is an unscaled number of" #~ msgstr "которого -- 512 байтов, и -u, задающего безразмерное число" @@ -7614,52 +7770,38 @@ msgstr "" #~ msgid "processes." #~ msgstr "процессов." -#~ msgid "" -#~ "The user file-creation mask is set to MODE. If MODE is omitted, or if" -#~ msgstr "" -#~ "Устанавливает маску создания пользователем файлов в РЕЖИМ. Если опущен" +#~ msgid "The user file-creation mask is set to MODE. If MODE is omitted, or if" +#~ msgstr "Устанавливает маску создания пользователем файлов в РЕЖИМ. Если опущен" -#~ msgid "" -#~ "`-S' is supplied, the current value of the mask is printed. The `-S'" -#~ msgstr "" -#~ "РЕЖИМ или задан параметр -S выводится текущее значение маски. Параметр" +#~ msgid "`-S' is supplied, the current value of the mask is printed. The `-S'" +#~ msgstr "РЕЖИМ или задан параметр -S выводится текущее значение маски. Параметр" -#~ msgid "" -#~ "option makes the output symbolic; otherwise an octal number is output." +#~ msgid "option makes the output symbolic; otherwise an octal number is output." #~ msgstr "-S делает вывод символическим, в противном случае используется" #~ msgid "If MODE begins with a digit, it is interpreted as an octal number," -#~ msgstr "" -#~ "восьмеричое число. Если РЕЖИм начинается с цифры, он интерпретируется" +#~ msgstr "восьмеричое число. Если РЕЖИм начинается с цифры, он интерпретируется" -#~ msgid "" -#~ "otherwise it is a symbolic mode string like that accepted by chmod(1)." -#~ msgstr "" -#~ "как восьмеричное число, в противном случае как строка, принимаемая chmod" -#~ "(1)." +#~ msgid "otherwise it is a symbolic mode string like that accepted by chmod(1)." +#~ msgstr "как восьмеричное число, в противном случае как строка, принимаемая chmod(1)." -#~ msgid "" -#~ "Wait for the specified process and report its termination status. If" -#~ msgstr "" -#~ "Подождать завершения указанного процесса и сообщить код завершения. Если" +#~ msgid "Wait for the specified process and report its termination status. If" +#~ msgstr "Подождать завершения указанного процесса и сообщить код завершения. Если" #~ msgid "N is not given, all currently active child processes are waited for," -#~ msgstr "" -#~ "N не задано, ожидается завершение работы всех активных дочерних процессов" +#~ msgstr "N не задано, ожидается завершение работы всех активных дочерних процессов" #~ msgid "and the return code is zero. N may be a process ID or a job" #~ msgstr "и код возврата равен 0. N может быть идентификатором процесса" #~ msgid "specification; if a job spec is given, all processes in the job's" -#~ msgstr "" -#~ "или спецификацией задачи, если задана спецификация задачи, ожидается" +#~ msgstr "или спецификацией задачи, если задана спецификация задачи, ожидается" #~ msgid "pipeline are waited for." #~ msgstr "завершение работы всех процессов конвейера задачи." #~ msgid "and the return code is zero. N is a process ID; if it is not given," -#~ msgstr "" -#~ "и код возврата равен 0. N -- идентификатор процесса, если он не задан," +#~ msgstr "и код возврата равен 0. N -- идентификатор процесса, если он не задан," #~ msgid "all child processes of the shell are waited for." #~ msgstr "ожидается завершение работы всех дочерних процессов оболочки." @@ -7667,13 +7809,10 @@ msgstr "" #~ msgid "The `for' loop executes a sequence of commands for each member in a" #~ msgstr "Цикл `for' выполняет последовательность команд для каждого члена" -#~ msgid "" -#~ "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" -#~ msgstr "" -#~ "списка. Если отсутствует `in СЛОВА ...;', предполагается, что задано" +#~ msgid "list of items. If `in WORDS ...;' is not present, then `in \"$@\"' is" +#~ msgstr "списка. Если отсутствует `in СЛОВА ...;', предполагается, что задано" -#~ msgid "" -#~ "assumed. For each element in WORDS, NAME is set to that element, and" +#~ msgid "assumed. For each element in WORDS, NAME is set to that element, and" #~ msgstr "`in \"$@\"'. Для каждого из СЛОВ ИМЕНИ присваивается его значение" #~ msgid "the COMMANDS are executed." @@ -7683,15 +7822,13 @@ msgstr "" #~ msgstr "СЛОВА разворачиваются и образуют список слов. Полученный список" #~ msgid "set of expanded words is printed on the standard error, each" -#~ msgstr "" -#~ "выводится на стандартный поток ошибок, каждому приписывается спереди" +#~ msgstr "выводится на стандартный поток ошибок, каждому приписывается спереди" #~ msgid "preceded by a number. If `in WORDS' is not present, `in \"$@\"'" #~ msgstr "число. Если `in СЛОВА' отсутствует, предполагается заданным" #~ msgid "is assumed. The PS3 prompt is then displayed and a line read" -#~ msgstr "" -#~ "`in \"$@\"'. Затем выводится приглашение PS3 и со стандартного ввода" +#~ msgstr "`in \"$@\"'. Затем выводится приглашение PS3 и со стандартного ввода" #~ msgid "from the standard input. If the line consists of the number" #~ msgstr "считывается строка. Если строка состоит из числа, соответствующего" @@ -7712,47 +7849,34 @@ msgstr "" #~ msgstr "сохраняется в переменной REPLY. После каждого выбора выполняются" #~ msgid "until a break or return command is executed." -#~ msgstr "" -#~ "КОМАНДЫ до тех пор, пока не будет выполнена команда break или return." +#~ msgstr "КОМАНДЫ до тех пор, пока не будет выполнена команда break или return." #~ msgid "Selectively execute COMMANDS based upon WORD matching PATTERN. The" -#~ msgstr "" -#~ "Выполняет КОМАНДЫ в зависимости от того, какому ШАБЛОНУ соответствует" +#~ msgstr "Выполняет КОМАНДЫ в зависимости от того, какому ШАБЛОНУ соответствует" #~ msgid "`|' is used to separate multiple patterns." -#~ msgstr "" -#~ "СЛОВО. Для разделения нескольких допустимых шаблонов используется `|'." +#~ msgstr "СЛОВО. Для разделения нескольких допустимых шаблонов используется `|'." -#~ msgid "" -#~ "The if COMMANDS are executed. If the exit status is zero, then the then" -#~ msgstr "" -#~ "Выполняются КОМАНДЫ, заданные в if. Если код возврата нулевой, выполняются" +#~ msgid "The if COMMANDS are executed. If the exit status is zero, then the then" +#~ msgstr "Выполняются КОМАНДЫ, заданные в if. Если код возврата нулевой, выполняются" -#~ msgid "" -#~ "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" +#~ msgid "COMMANDS are executed. Otherwise, each of the elif COMMANDS are executed" #~ msgstr "КОМАНДЫ then, иначе по очереди выполняются КОМАНДЫ elif, и если код" -#~ msgid "" -#~ "in turn, and if the exit status is zero, the corresponding then COMMANDS" -#~ msgstr "" -#~ "возврата нулевой, выполняются соответствующие КОМАНДЫ then и выполнение" +#~ msgid "in turn, and if the exit status is zero, the corresponding then COMMANDS" +#~ msgstr "возврата нулевой, выполняются соответствующие КОМАНДЫ then и выполнение" -#~ msgid "" -#~ "are executed and the if command completes. Otherwise, the else COMMANDS" -#~ msgstr "" -#~ "команды if завершается. В противном случае выполняются КОМАНДЫ else," +#~ msgid "are executed and the if command completes. Otherwise, the else COMMANDS" +#~ msgstr "команды if завершается. В противном случае выполняются КОМАНДЫ else," -#~ msgid "" -#~ "are executed, if present. The exit status is the exit status of the last" +#~ msgid "are executed, if present. The exit status is the exit status of the last" #~ msgstr "если они присутствуют. Код возврата равен коду возврата последней" #~ msgid "command executed, or zero if no condition tested true." -#~ msgstr "" -#~ "выполненной команды, либо нулю, если ни одно условие не было истинным." +#~ msgstr "выполненной команды, либо нулю, если ни одно условие не было истинным." #~ msgid "Expand and execute COMMANDS as long as the final command in the" -#~ msgstr "" -#~ "Разворачивает и выполняет КОМАНДЫ до тех пор, пока последняя команда" +#~ msgstr "Разворачивает и выполняет КОМАНДЫ до тех пор, пока последняя команда" #~ msgid "`while' COMMANDS has an exit status of zero." #~ msgstr "предложения `while' не завершит работу с нулевым кодом возврата." @@ -7776,15 +7900,12 @@ msgstr "" #~ msgstr "перенаправление для целого набора команд." #~ msgid "This is similar to the `fg' command. Resume a stopped or background" -#~ msgstr "" -#~ "Похоже на команду `fg'. Продолжает выполнение остановленной или фоновой" +#~ msgstr "Похоже на команду `fg'. Продолжает выполнение остановленной или фоновой" #~ msgid "job. If you specifiy DIGITS, then that job is used. If you specify" -#~ msgstr "" -#~ "задачи. Если заданы ЦИФРЫ, использяется задача с этим номером, а если" +#~ msgstr "задачи. Если заданы ЦИФРЫ, использяется задача с этим номером, а если" -#~ msgid "" -#~ "WORD, then the job whose name begins with WORD is used. Following the" +#~ msgid "WORD, then the job whose name begins with WORD is used. Following the" #~ msgstr "СЛОВО -- задача, имя которой начинается с этого слова. Завершение" #~ msgid "job specification with a `&' places the job in the background." @@ -7799,8 +7920,7 @@ msgstr "" #~ msgid "\t\twhen the argument to `cd' is not found in the current" #~ msgstr "\t\tаргумент команды `cd', если он не найден в текущем" -#~ msgid "" -#~ "HISTFILE The name of the file where your command history is stored." +#~ msgid "HISTFILE The name of the file where your command history is stored." #~ msgstr "HISTFILE Имя файла, где сохраняется история команд." #~ msgid "HISTFILESIZE The maximum number of lines this file can contain." @@ -7815,15 +7935,11 @@ msgstr "" #~ msgid "HOME The complete pathname to your login directory." #~ msgstr "HOME Полный путь к домашнему каталогу." -#~ msgid "" -#~ "HOSTTYPE The type of CPU this version of Bash is running under." -#~ msgstr "" -#~ "HOSTTYPE Тип процессора, на котором работает эта версия Bash." +#~ msgid "HOSTTYPE The type of CPU this version of Bash is running under." +#~ msgstr "HOSTTYPE Тип процессора, на котором работает эта версия Bash." -#~ msgid "" -#~ "IGNOREEOF Controls the action of the shell on receipt of an EOF" -#~ msgstr "" -#~ "IGNOREEOF Управляет действиями, совершаемыми оболочкой при вводе" +#~ msgid "IGNOREEOF Controls the action of the shell on receipt of an EOF" +#~ msgstr "IGNOREEOF Управляет действиями, совершаемыми оболочкой при вводе" #~ msgid "\t\tcharacter as the sole input. If set, then the value" #~ msgstr "\t\tсимвола конца файла. Если установлена, её значение -- число" @@ -7835,12 +7951,10 @@ msgstr "" #~ msgstr "\t\tв пустой строке, после чего оболочка завершит работу" #~ msgid "\t\t(default 10). When unset, EOF signifies the end of input." -#~ msgstr "" -#~ "\t\t(по умолчанию 10). Если не установлена, EOF обозначает конец ввода." +#~ msgstr "\t\t(по умолчанию 10). Если не установлена, EOF обозначает конец ввода." #~ msgid "MAILCHECK\tHow often, in seconds, Bash checks for new mail." -#~ msgstr "" -#~ "MAILCHECK\tКак часто, в секундах, Bash проверяет наличие новой почты." +#~ msgstr "MAILCHECK\tКак часто, в секундах, Bash проверяет наличие новой почты." #~ msgid "MAILPATH\tA colon-separated list of filenames which Bash checks" #~ msgstr "MAILPATH\tРазделённый запятыми список имён файлов, где Bash" @@ -7873,8 +7987,7 @@ msgstr "" #~ msgstr "TERM Имя типа текущего терминала." #~ msgid "auto_resume Non-null means a command word appearing on a line by" -#~ msgstr "" -#~ "auto_resume Ненулевые значения слов команд, встречающиеся в строке" +#~ msgstr "auto_resume Ненулевые значения слов команд, встречающиеся в строке" #~ msgid "\t\titself is first looked for in the list of currently" #~ msgstr "\t\tотдельно, сначала ищутся в списке остановленных" @@ -7900,10 +8013,8 @@ msgstr "" #~ msgid "command_oriented_history" #~ msgstr "command_oriented_history" -#~ msgid "" -#~ " Non-null means to save multiple-line commands together on" -#~ msgstr "" -#~ " Ненулевое значение означает, что многострочные команды" +#~ msgid " Non-null means to save multiple-line commands together on" +#~ msgstr " Ненулевое значение означает, что многострочные команды" #~ msgid " a single history line." #~ msgstr " будут сохраняться в одной строке истории." @@ -8001,8 +8112,7 @@ msgstr "" #~ msgid "\tremoves the last directory, `popd -1' the next to last." #~ msgstr "\tудаляет последний каталог, `popd -1' -- предпоследний." -#~ msgid "" -#~ "-n\tsuppress the normal change of directory when removing directories" +#~ msgid "-n\tsuppress the normal change of directory when removing directories" #~ msgstr "-n\tподавляет обычную смену каталога при удалении каталогов из" #~ msgid "\tfrom the stack, so only the stack is manipulated." @@ -8012,19 +8122,15 @@ msgstr "" #~ msgstr "Выводит список запомненных на данный момент каталогов. Каталоги" #~ msgid "find their way onto the list with the `pushd' command; you can get" -#~ msgstr "" -#~ "попадают в список при использовании команды `pushd', вы можете забрать" +#~ msgstr "попадают в список при использовании команды `pushd', вы можете забрать" #~ msgid "back up through the list with the `popd' command." #~ msgstr "их из списка командой `popd'." -#~ msgid "" -#~ "The -l flag specifies that `dirs' should not print shorthand versions" -#~ msgstr "" -#~ "Флаг -l указывает, что `dirs' не должна выводит сокращённые варианты" +#~ msgid "The -l flag specifies that `dirs' should not print shorthand versions" +#~ msgstr "Флаг -l указывает, что `dirs' не должна выводит сокращённые варианты" -#~ msgid "" -#~ "of directories which are relative to your home directory. This means" +#~ msgid "of directories which are relative to your home directory. This means" #~ msgstr "каталогов, заданных относительно домашнего. Это означает, что" #~ msgid "that `~/bin' might be displayed as `/homes/bfox/bin'. The -v flag" @@ -8033,27 +8139,22 @@ msgstr "" #~ msgid "causes `dirs' to print the directory stack with one entry per line," #~ msgstr "заставляет `dirs' выводить каталоги по одному в строке, предваряя" -#~ msgid "" -#~ "prepending the directory name with its position in the stack. The -p" -#~ msgstr "" -#~ "имя каталога номером его позиции в стеке. Флаг -p делает то же самое," +#~ msgid "prepending the directory name with its position in the stack. The -p" +#~ msgstr "имя каталога номером его позиции в стеке. Флаг -p делает то же самое," #~ msgid "flag does the same thing, but the stack position is not prepended." #~ msgstr "но не добавляются номера позиций. Флаг -c очищает стек каталогов," -#~ msgid "" -#~ "The -c flag clears the directory stack by deleting all of the elements." +#~ msgid "The -c flag clears the directory stack by deleting all of the elements." #~ msgstr "удаляя все его элементы." -#~ msgid "" -#~ "+N\tdisplays the Nth entry counting from the left of the list shown by" +#~ msgid "+N\tdisplays the Nth entry counting from the left of the list shown by" #~ msgstr "+N\tвыводит N-й каталог, считая с левой стороны списка, выводимого" #~ msgid "\tdirs when invoked without options, starting with zero." #~ msgstr "\tdirs при вызове без параметров, начиная с нуля." -#~ msgid "" -#~ "-N\tdisplays the Nth entry counting from the right of the list shown by" +#~ msgid "-N\tdisplays the Nth entry counting from the right of the list shown by" #~ msgstr "-N\tвыводит N-й каталог, считая с правой стороны списка, выводимого" #~ msgid "Toggle the values of variables controlling optional behavior." diff --git a/po/zh_TW.po b/po/zh_TW.po index 28c2b63a1..2a04db0ec 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -1,138 +1,140 @@ # 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 , 2008. # Mingye Wang (Arthur2e5) , 2015. # Wei-Lun Chao , 2015. -# +# pan93412 , 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: 2018-04-27 14:15-0400\n" -"PO-Revision-Date: 2015-08-27 13:36+0800\n" -"Last-Translator: Wei-Lun Chao \n" +"POT-Creation-Date: 2016-09-10 12:42-0400\n" +"PO-Revision-Date: 2018-05-08 21:29+0800\n" +"Last-Translator: pan93412 \n" "Language-Team: Chinese (traditional) \n" +"Language: zh_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: Lokalize 2.0\n" -#: arrayfunc.c:58 +#: arrayfunc.c:54 msgid "bad array subscript" msgstr "陣列下標不正確" -#: arrayfunc.c:373 builtins/declare.def:618 variables.c:2188 variables.c:2214 -#: variables.c:2922 +#: arrayfunc.c:368 builtins/declare.def:574 variables.c:2092 variables.c:2118 +#: variables.c:2730 #, c-format msgid "%s: removing nameref attribute" -msgstr "" +msgstr "%s:正在移除 nameref 屬性" -#: arrayfunc.c:398 builtins/declare.def:831 +#: arrayfunc.c:393 builtins/declare.def:780 #, c-format msgid "%s: cannot convert indexed to associative array" msgstr "%s: 無法將索引陣列轉化為關聯陣列" -#: arrayfunc.c:582 +#: arrayfunc.c:578 #, c-format msgid "%s: invalid associative array key" msgstr "%s: 無效的關聯陣列鍵值" -#: arrayfunc.c:584 +#: arrayfunc.c:580 #, c-format msgid "%s: cannot assign to non-numeric index" msgstr "%s: 無法指派為非數字的索引" -#: arrayfunc.c:629 +#: arrayfunc.c:625 #, c-format msgid "%s: %s: must use subscript when assigning associative array" msgstr "%s: %s: 指派為關聯陣列時必須使用下標" -#: bashhist.c:436 +#: bashhist.c:421 #, c-format msgid "%s: cannot create: %s" msgstr "%s: 無法建立: %s" -#: bashline.c:4111 +#: bashline.c:4091 msgid "bash_execute_unix_command: cannot find keymap for command" msgstr "bash_execute_unix_command: 無法為命令找到鍵對映" -#: bashline.c:4221 +#: bashline.c:4189 #, c-format msgid "%s: first non-whitespace character is not `\"'" msgstr "%s: 第一個非空字元不是「\"」" -#: bashline.c:4250 +#: bashline.c:4218 #, c-format msgid "no closing `%c' in %s" msgstr "%2$s 中沒有閉合的「%1$c」" -#: bashline.c:4284 +#: bashline.c:4252 #, c-format msgid "%s: missing colon separator" msgstr "%s: 缺少冒號分隔符" -#: braces.c:331 +#: braces.c:329 #, c-format msgid "brace expansion: cannot allocate memory for %s" msgstr "大括號展開: 無法為 %s 分配記憶體" -#: braces.c:429 -#, fuzzy, c-format -msgid "brace expansion: failed to allocate memory for %u elements" +#: braces.c:427 +#, c-format +msgid "brace expansion: failed to allocate memory for %d elements" msgstr "大括號展開: 為 %d 個元素分配記憶體失敗" -#: braces.c:473 +#: braces.c:471 #, c-format msgid "brace expansion: failed to allocate memory for `%s'" msgstr "大括號展開: 為「%s」分配記憶體失敗" -#: builtins/alias.def:131 +#: builtins/alias.def:133 #, c-format msgid "`%s': invalid alias name" msgstr "「%s」: 無效的別名" -#: builtins/bind.def:122 builtins/bind.def:125 +#: builtins/bind.def:123 builtins/bind.def:126 msgid "line editing not enabled" msgstr "未啟用列編輯" -#: builtins/bind.def:212 +#: builtins/bind.def:213 #, c-format msgid "`%s': invalid keymap name" msgstr "「%s」: 無效的鍵對映名" -#: builtins/bind.def:252 +#: builtins/bind.def:253 #, c-format msgid "%s: cannot read: %s" msgstr "%s:不能讀取: %s" -#: builtins/bind.def:304 builtins/bind.def:334 +#: builtins/bind.def:270 +#, c-format +msgid "`%s': cannot unbind" +msgstr "「%s」: 無法解除繫結" + +#: builtins/bind.def:308 builtins/bind.def:338 #, c-format msgid "`%s': unknown function name" msgstr "「%s」:不明函數名稱" -#: builtins/bind.def:312 +#: builtins/bind.def:316 #, c-format msgid "%s is not bound to any keys.\n" msgstr "%s 未與任何鍵繫結。\n" -#: builtins/bind.def:316 +#: builtins/bind.def:320 #, c-format msgid "%s can be invoked via " msgstr "%s 可以被呼叫,藉由" -#: builtins/bind.def:353 builtins/bind.def:368 -#, c-format -msgid "`%s': cannot unbind" -msgstr "「%s」: 無法解除繫結" - -#: builtins/break.def:77 builtins/break.def:119 +#: builtins/break.def:79 builtins/break.def:121 msgid "loop count" msgstr "迴圈計數" -#: builtins/break.def:139 +#: builtins/break.def:141 msgid "only meaningful in a `for', `while', or `until' loop" msgstr "僅在「for」,「while」, 或者「until」迴圈中有意義" @@ -146,234 +148,233 @@ msgstr "" " \n" " 不帶 EXPR 時,回傳" -#: builtins/cd.def:319 +#: builtins/cd.def:321 msgid "HOME not set" msgstr "HOME 沒有設置" -#: builtins/cd.def:327 builtins/common.c:161 test.c:889 +#: builtins/cd.def:329 builtins/common.c:167 test.c:885 msgid "too many arguments" msgstr "太多引數" -#: builtins/cd.def:334 -#, fuzzy +#: builtins/cd.def:336 msgid "null directory" -msgstr "無其他目錄" +msgstr "空的目錄" -#: builtins/cd.def:345 +#: builtins/cd.def:347 msgid "OLDPWD not set" msgstr "OLDPWD 沒有設置" -#: builtins/common.c:96 +#: builtins/common.c:102 #, c-format msgid "line %d: " msgstr "第 %d 列:" -#: builtins/common.c:134 error.c:264 +#: builtins/common.c:140 error.c:265 #, c-format msgid "warning: " msgstr "警告:" -#: builtins/common.c:148 +#: builtins/common.c:154 #, c-format msgid "%s: usage: " msgstr "%s: 用法:" -#: builtins/common.c:193 shell.c:510 shell.c:838 +#: builtins/common.c:199 shell.c:514 shell.c:825 #, c-format msgid "%s: option requires an argument" msgstr "%s:選項需要一個引數" -#: builtins/common.c:200 +#: builtins/common.c:206 #, c-format msgid "%s: numeric argument required" msgstr "%s:需要數字引數" -#: builtins/common.c:207 +#: builtins/common.c:213 #, c-format msgid "%s: not found" msgstr "%s:沒有找到" -#: builtins/common.c:216 shell.c:851 +#: builtins/common.c:222 shell.c:838 #, c-format msgid "%s: invalid option" msgstr "%s:無效選項" -#: builtins/common.c:223 +#: builtins/common.c:229 #, c-format msgid "%s: invalid option name" msgstr "%s:無效選項名稱" -#: builtins/common.c:230 execute_cmd.c:2342 general.c:294 general.c:299 +#: builtins/common.c:236 general.c:293 general.c:298 #, c-format msgid "`%s': not a valid identifier" msgstr "「%s」:不是一個有效的識別符" -#: builtins/common.c:240 +#: builtins/common.c:246 msgid "invalid octal number" msgstr "無效的八進位數字" -#: builtins/common.c:242 +#: builtins/common.c:248 msgid "invalid hex number" msgstr "無效的十六進位數字" -#: builtins/common.c:244 expr.c:1538 +#: builtins/common.c:250 expr.c:1473 msgid "invalid number" msgstr "無效數字" -#: builtins/common.c:252 +#: builtins/common.c:258 #, c-format msgid "%s: invalid signal specification" msgstr "%s:無效的信號規格" -#: builtins/common.c:259 +#: builtins/common.c:265 #, c-format msgid "`%s': not a pid or valid job spec" msgstr "「%s」:不是一個 pid 或有效的工作規格" -#: builtins/common.c:266 error.c:510 +#: builtins/common.c:272 error.c:511 #, c-format msgid "%s: readonly variable" msgstr "%s:唯讀的變數" -#: builtins/common.c:274 +#: builtins/common.c:280 #, c-format msgid "%s: %s out of range" msgstr "%s:%s 超出範圍" -#: builtins/common.c:274 builtins/common.c:276 +#: builtins/common.c:280 builtins/common.c:282 msgid "argument" msgstr "引數" -#: builtins/common.c:276 +#: builtins/common.c:282 #, c-format msgid "%s out of range" msgstr "%s 超出範圍" -#: builtins/common.c:284 +#: builtins/common.c:290 #, c-format msgid "%s: no such job" msgstr "%s:沒有此類工作" -#: builtins/common.c:292 +#: builtins/common.c:298 #, c-format msgid "%s: no job control" msgstr "%s:沒有工作控制" -#: builtins/common.c:294 +#: builtins/common.c:300 msgid "no job control" msgstr "沒有工作控制" -#: builtins/common.c:304 +#: builtins/common.c:310 #, c-format msgid "%s: restricted" msgstr "%s:受限的" -#: builtins/common.c:306 +#: builtins/common.c:312 msgid "restricted" msgstr "受限的" -#: builtins/common.c:314 +#: builtins/common.c:320 #, c-format msgid "%s: not a shell builtin" msgstr "%s:不是一個內建 shell" -#: builtins/common.c:323 +#: builtins/common.c:329 #, c-format msgid "write error: %s" msgstr "寫入錯誤: %s" -#: builtins/common.c:331 +#: builtins/common.c:337 #, c-format msgid "error setting terminal attributes: %s" msgstr "設定終端屬性時出錯: %s" -#: builtins/common.c:333 +#: builtins/common.c:339 #, c-format msgid "error getting terminal attributes: %s" msgstr "獲取終端屬性時出錯: %s" -#: builtins/common.c:579 +#: builtins/common.c:585 #, c-format msgid "%s: error retrieving current directory: %s: %s\n" msgstr "%s:錯誤檢索當前目錄: %s: %s\n" -#: builtins/common.c:645 builtins/common.c:647 +#: builtins/common.c:651 builtins/common.c:653 #, c-format msgid "%s: ambiguous job spec" msgstr "%s:模稜兩可的工作規格" -#: builtins/common.c:908 +#: builtins/common.c:918 msgid "help not available in this version" -msgstr "" +msgstr "這個版本沒有可用的說明" #: builtins/complete.def:278 #, c-format msgid "%s: invalid action name" msgstr "%s:無效的功能名稱" -#: builtins/complete.def:452 builtins/complete.def:653 -#: builtins/complete.def:874 +#: builtins/complete.def:452 builtins/complete.def:647 +#: builtins/complete.def:858 #, c-format msgid "%s: no completion specification" msgstr "%s:沒有完成的規格" -#: builtins/complete.def:707 +#: builtins/complete.def:699 msgid "warning: -F option may not work as you expect" msgstr "警告: -F 選項可能無法按預期工作" -#: builtins/complete.def:709 +#: builtins/complete.def:701 msgid "warning: -C option may not work as you expect" msgstr "警告: -C 選項可能無法按預期工作" -#: builtins/complete.def:847 +#: builtins/complete.def:831 msgid "not currently executing completion function" msgstr "當前未執行補完功能" -#: builtins/declare.def:132 +#: builtins/declare.def:127 msgid "can only be used in a function" msgstr "只能用在函數中" -#: builtins/declare.def:369 builtins/declare.def:736 +#: builtins/declare.def:332 builtins/declare.def:685 #, c-format msgid "%s: reference variable cannot be an array" msgstr "%s: 引用變數不能為陣列" -#: builtins/declare.def:380 variables.c:3161 +#: builtins/declare.def:343 variables.c:2959 #, c-format msgid "%s: nameref variable self references not allowed" msgstr "%s: 不允許名稱引用變數引用自身" -#: builtins/declare.def:385 variables.c:2018 variables.c:3083 variables.c:3095 -#: variables.c:3158 +#: builtins/declare.def:348 variables.c:1928 variables.c:2877 variables.c:2889 +#: variables.c:2956 #, c-format msgid "%s: circular name reference" msgstr "%s: 迴圈變數名引用" -#: builtins/declare.def:390 builtins/declare.def:742 builtins/declare.def:753 -#, fuzzy, c-format +#: builtins/declare.def:353 builtins/declare.def:691 builtins/declare.def:702 +#, c-format msgid "`%s': invalid variable name for name reference" -msgstr "%s: 無效的引用變數名" +msgstr "「%s」:無效的引用變數名" -#: builtins/declare.def:500 +#: builtins/declare.def:463 msgid "cannot use `-f' to make functions" msgstr "無法用「-f」生成函數" -#: builtins/declare.def:512 execute_cmd.c:5797 +#: builtins/declare.def:475 execute_cmd.c:5632 #, c-format msgid "%s: readonly function" msgstr "%s:唯讀函數" -#: builtins/declare.def:804 +#: builtins/declare.def:753 #, c-format msgid "%s: quoted compound array assignment deprecated" -msgstr "" +msgstr "%s:不建議使用引用的複合陣列指定" -#: builtins/declare.def:818 +#: builtins/declare.def:767 #, c-format msgid "%s: cannot destroy array variables in this way" msgstr "%s: 無法以這種方式銷毀陣列變數" -#: builtins/declare.def:825 builtins/read.def:784 +#: builtins/declare.def:774 builtins/read.def:751 #, c-format msgid "%s: cannot convert associative to indexed array" msgstr "%s: 無法將關聯陣列轉化為索引陣列" @@ -395,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 @@ -407,68 +408,68 @@ msgstr "%s: 未以動態方式載入" msgid "%s: cannot delete: %s" msgstr "%s: 無法刪除: %s" -#: builtins/evalfile.c:138 builtins/hash.def:184 execute_cmd.c:5629 +#: builtins/evalfile.c:144 builtins/hash.def:172 execute_cmd.c:5472 #, c-format msgid "%s: is a directory" msgstr "%s: 是一個目錄" -#: builtins/evalfile.c:144 +#: builtins/evalfile.c:150 #, c-format msgid "%s: not a regular file" msgstr "%s: 不是常規檔案" -#: builtins/evalfile.c:153 +#: builtins/evalfile.c:159 #, c-format msgid "%s: file is too large" msgstr "%s: 檔案太大" -#: builtins/evalfile.c:188 builtins/evalfile.c:206 shell.c:1623 +#: builtins/evalfile.c:194 builtins/evalfile.c:212 shell.c:1578 #, c-format msgid "%s: cannot execute binary file" msgstr "%s: 無法執行二進位檔案" -#: builtins/exec.def:155 builtins/exec.def:157 builtins/exec.def:237 +#: builtins/exec.def:156 builtins/exec.def:158 builtins/exec.def:235 #, c-format msgid "%s: cannot execute: %s" msgstr "%s: 無法執行: %s" -#: builtins/exit.def:64 +#: builtins/exit.def:67 #, c-format msgid "logout\n" msgstr "登出\n" -#: builtins/exit.def:89 +#: builtins/exit.def:92 msgid "not login shell: use `exit'" msgstr "不是登入 shell: 使用「exit」" -#: builtins/exit.def:121 +#: builtins/exit.def:124 #, c-format msgid "There are stopped jobs.\n" msgstr "有停止的工作。\n" -#: builtins/exit.def:123 +#: builtins/exit.def:126 #, c-format msgid "There are running jobs.\n" msgstr "有執行中的工作。\n" -#: builtins/fc.def:265 +#: builtins/fc.def:269 msgid "no command found" msgstr "未找到命令" -#: builtins/fc.def:323 builtins/fc.def:372 +#: builtins/fc.def:327 builtins/fc.def:376 msgid "history specification" msgstr "歷史記錄規格" -#: builtins/fc.def:393 +#: builtins/fc.def:397 #, c-format msgid "%s: cannot open temp file: %s" msgstr "%s: 無法開啟臨時檔案: %s" -#: builtins/fg_bg.def:152 builtins/jobs.def:284 +#: builtins/fg_bg.def:153 builtins/jobs.def:284 msgid "current" msgstr "當前" -#: builtins/fg_bg.def:161 +#: builtins/fg_bg.def:162 #, c-format msgid "job %d started without job control" msgstr "在不帶工作控制的情況下啟動了工作 %d" @@ -483,38 +484,37 @@ msgstr "%s: 非法選項 -- %c\n" msgid "%s: option requires an argument -- %c\n" msgstr "%s: 選項需要一個引數 -- %c\n" -#: builtins/hash.def:91 +#: builtins/hash.def:92 msgid "hashing disabled" msgstr "已停用雜湊" -#: builtins/hash.def:138 +#: builtins/hash.def:139 #, c-format msgid "%s: hash table empty\n" msgstr "%s: 雜湊表為空\n" -#: builtins/hash.def:266 +#: builtins/hash.def:254 #, c-format msgid "hits\tcommand\n" msgstr "命中\t命令\n" -#: builtins/help.def:133 +#: builtins/help.def:135 +#, c-format msgid "Shell commands matching keyword `" msgid_plural "Shell commands matching keywords `" msgstr[0] "Shell 命令,匹配關鍵詞 `" -#: builtins/help.def:185 +#: builtins/help.def:187 #, 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」。" +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:224 +#: builtins/help.def:226 #, c-format msgid "%s: cannot open: %s" msgstr "%s: 無法開啟: %s" -#: builtins/help.def:524 +#: builtins/help.def:526 #, c-format msgid "" "These shell commands are defined internally. Type `help' to see this list.\n" @@ -533,21 +533,20 @@ msgstr "" "名稱旁邊的星號(*)表示該命令被停用。\n" "\n" -#: builtins/history.def:154 +#: builtins/history.def:155 msgid "cannot use more than one of -anrw" msgstr "最多能使用 -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 +#: builtins/history.def:187 msgid "history position" msgstr "歷史記錄位置" -#: builtins/history.def:331 -#, fuzzy, c-format +#: builtins/history.def:264 +#, c-format msgid "%s: invalid timestamp" -msgstr "%s: 無效引數" +msgstr "%s:無效時間戳" -#: builtins/history.def:442 +#: builtins/history.def:375 #, c-format msgid "%s: history expansion failed" msgstr "%s: 歷史記錄擴充套件失敗" @@ -561,16 +560,16 @@ msgstr "%s: inlib 失敗" msgid "no other options allowed with `-x'" msgstr "其他選項不能與「-x」同時使用" -#: builtins/kill.def:200 +#: builtins/kill.def:202 #, c-format msgid "%s: arguments must be process or job IDs" msgstr "%s: 引數必須是行程或工作 ID" -#: builtins/kill.def:263 +#: builtins/kill.def:265 msgid "Unknown error" msgstr "不明錯誤" -#: builtins/let.def:97 builtins/let.def:122 expr.c:614 expr.c:632 +#: builtins/let.def:97 builtins/let.def:122 expr.c:583 expr.c:598 msgid "expression expected" msgstr "需要表示式" @@ -579,69 +578,69 @@ msgstr "需要表示式" msgid "%s: not an indexed array" msgstr "%s: 不是一個索引陣列" -#: builtins/mapfile.def:271 builtins/read.def:305 +#: builtins/mapfile.def:272 builtins/read.def:306 #, c-format msgid "%s: invalid file descriptor specification" msgstr "%s: 無效的檔案描述符規格" -#: builtins/mapfile.def:279 builtins/read.def:312 +#: builtins/mapfile.def:280 builtins/read.def:313 #, c-format msgid "%d: invalid file descriptor: %s" msgstr "%d: 無效的檔案描述符: %s" -#: builtins/mapfile.def:288 builtins/mapfile.def:326 +#: builtins/mapfile.def:289 builtins/mapfile.def:327 #, c-format msgid "%s: invalid line count" msgstr "%s: 無效的列數" -#: builtins/mapfile.def:299 +#: builtins/mapfile.def:300 #, c-format msgid "%s: invalid array origin" msgstr "%s: 無效的陣列原點" -#: builtins/mapfile.def:316 +#: builtins/mapfile.def:317 #, c-format msgid "%s: invalid callback quantum" msgstr "%s: 無效的回呼定量" -#: builtins/mapfile.def:349 +#: builtins/mapfile.def:350 msgid "empty array variable name" msgstr "空陣列變數名" -#: builtins/mapfile.def:370 +#: builtins/mapfile.def:371 msgid "array variable support required" msgstr "需要陣列變數支援" -#: builtins/printf.def:416 +#: builtins/printf.def:412 #, c-format msgid "`%s': missing format character" msgstr "「%s」: 缺少格式字元" -#: builtins/printf.def:471 +#: builtins/printf.def:467 #, c-format msgid "`%c': invalid time format specification" msgstr "「%c」: 無效的時間格式規格" -#: builtins/printf.def:673 +#: builtins/printf.def:669 #, c-format msgid "`%c': invalid format character" msgstr "「%c」: 無效格式字元" -#: builtins/printf.def:699 +#: builtins/printf.def:695 #, c-format msgid "warning: %s: %s" msgstr "警告: %s: %s" -#: builtins/printf.def:785 +#: builtins/printf.def:781 #, c-format msgid "format parsing problem: %s" msgstr "格式解析問題: %s" -#: builtins/printf.def:882 +#: builtins/printf.def:878 msgid "missing hex digit for \\x" msgstr "使用了 \\x 但缺少十六進位數字" -#: builtins/printf.def:897 +#: builtins/printf.def:893 #, c-format msgid "missing unicode digit for \\%c" msgstr "使用了 \\%c 但缺少萬國碼數字" @@ -655,19 +654,19 @@ msgstr "無其他目錄" msgid "%s: invalid argument" msgstr "%s: 無效引數" -#: builtins/pushd.def:480 +#: builtins/pushd.def:475 msgid "" msgstr "<無當前目錄>" -#: builtins/pushd.def:524 +#: builtins/pushd.def:519 msgid "directory stack empty" msgstr "目錄堆疊為空" -#: builtins/pushd.def:526 +#: builtins/pushd.def:521 msgid "directory stack index" msgstr "目錄堆疊索引" -#: builtins/pushd.def:701 +#: builtins/pushd.def:696 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,12 +681,10 @@ msgid "" " \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" +" +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" +" -N\tDisplays the Nth entry counting from the right of the list shown by\n" "\tdirs when invoked without options, starting with zero." msgstr "" "顯示當前記住的目錄列表。 目錄\n" @@ -709,7 +706,7 @@ msgstr "" " -N\t以 dirs 不帶選項輸出的順序,從右起第 N 個項目顯示列表,\n" "\t從 0 開始。" -#: builtins/pushd.def:723 +#: builtins/pushd.def:718 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 +752,7 @@ msgstr "" " \n" " 「dirs」內建命令顯示目錄堆疊。" -#: builtins/pushd.def:748 +#: builtins/pushd.def:743 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" @@ -793,67 +790,67 @@ msgstr "" " \n" " 「dirs」內建變數顯示目錄堆疊。" -#: builtins/read.def:277 +#: builtins/read.def:279 #, c-format msgid "%s: invalid timeout specification" msgstr "%s: 無效的逾時規格" -#: builtins/read.def:729 +#: builtins/read.def:696 #, c-format msgid "read error: %d: %s" msgstr "讀取錯誤: %d: %s" -#: builtins/return.def:68 +#: builtins/return.def:71 msgid "can only `return' from a function or sourced script" msgstr "只能從函數或者原始指令稿「return」" -#: builtins/set.def:834 +#: builtins/set.def:841 msgid "cannot simultaneously unset a function and a variable" msgstr "無法同時取消設定一個函數和一個變數" -#: builtins/set.def:881 +#: builtins/set.def:888 #, c-format msgid "%s: cannot unset" msgstr "%s: 無法取消設定" -#: builtins/set.def:902 variables.c:3597 +#: builtins/set.def:909 variables.c:3389 #, c-format msgid "%s: cannot unset: readonly %s" msgstr "%s: 無法取消設定: 唯讀 %s" -#: builtins/set.def:915 +#: builtins/set.def:922 #, c-format msgid "%s: not an array variable" msgstr "%s: 不是陣列變數" -#: builtins/setattr.def:189 +#: builtins/setattr.def:191 #, c-format msgid "%s: not a function" msgstr "%s: 不是函數" -#: builtins/setattr.def:194 -#, fuzzy, c-format +#: builtins/setattr.def:196 +#, 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:301 +#: builtins/shopt.def:289 msgid "cannot set and unset shell options simultaneously" msgstr "無法同時設定和取消設定 shell 選項" -#: builtins/shopt.def:403 +#: builtins/shopt.def:391 #, c-format msgid "%s: invalid shell option name" msgstr "%s: 無效的 shell 選項名稱" -#: builtins/source.def:128 +#: builtins/source.def:131 msgid "filename argument required" msgstr "需要檔名引數" -#: builtins/source.def:154 +#: builtins/source.def:157 #, c-format msgid "%s: file not found" msgstr "%s: 檔案未找到" @@ -866,61 +863,61 @@ msgstr "無法懸置" msgid "cannot suspend a login shell" msgstr "無法將登入 shell 懸置" -#: builtins/type.def:235 +#: builtins/type.def:236 #, c-format msgid "%s is aliased to `%s'\n" msgstr "%s 是「%s」的別名\n" -#: builtins/type.def:256 +#: builtins/type.def:257 #, c-format msgid "%s is a shell keyword\n" msgstr "%s 是 shell 關鍵字\n" -#: builtins/type.def:275 +#: builtins/type.def:276 #, c-format msgid "%s is a function\n" msgstr "%s 是一個函數\n" -#: builtins/type.def:299 -#, fuzzy, c-format +#: builtins/type.def:300 +#, c-format msgid "%s is a special shell builtin\n" -msgstr "%s 是 shell 內建\n" +msgstr "%s 是特別的 shell 內建\n" -#: builtins/type.def:301 +#: builtins/type.def:302 #, c-format msgid "%s is a shell builtin\n" msgstr "%s 是 shell 內建\n" -#: builtins/type.def:323 builtins/type.def:408 +#: builtins/type.def:324 builtins/type.def:409 #, c-format msgid "%s is %s\n" msgstr "%s 是 %s\n" -#: builtins/type.def:343 +#: builtins/type.def:344 #, c-format msgid "%s is hashed (%s)\n" msgstr "%s 已進行雜湊操作(%s)\n" -#: builtins/ulimit.def:396 +#: builtins/ulimit.def:398 #, c-format msgid "%s: invalid limit argument" msgstr "%s: 無效的 limit 引數" -#: builtins/ulimit.def:422 +#: builtins/ulimit.def:424 #, c-format msgid "`%c': bad command" msgstr "「%c」:不當的命令" -#: builtins/ulimit.def:451 +#: builtins/ulimit.def:453 #, c-format msgid "%s: cannot get limit: %s" msgstr "%s:不能得到 limit: %s" -#: builtins/ulimit.def:477 +#: builtins/ulimit.def:479 msgid "limit" msgstr "limit" -#: builtins/ulimit.def:489 builtins/ulimit.def:789 +#: builtins/ulimit.def:491 builtins/ulimit.def:791 #, c-format msgid "%s: cannot modify limit: %s" msgstr "%s:不能修改 limit: %s" @@ -939,207 +936,202 @@ msgstr "「%c」: 無效的符號狀態運算子" msgid "`%c': invalid symbolic mode character" msgstr "「%c」: 無效的符號狀態字元" -#: error.c:89 error.c:347 error.c:349 error.c:351 +#: error.c:90 error.c:348 error.c:350 error.c:352 msgid " line " msgstr " 列 " -#: error.c:164 +#: error.c:165 #, c-format msgid "last command: %s\n" msgstr "最後的命令: %s\n" -#: error.c:172 +#: error.c:173 #, c-format msgid "Aborting..." msgstr "中止…" #. TRANSLATORS: this is a prefix for informational messages. -#: error.c:287 +#: error.c:288 #, c-format msgid "INFORM: " -msgstr "" +msgstr "通知:" -#: error.c:462 +#: error.c:463 msgid "unknown command error" msgstr "不明命令錯誤" -#: error.c:463 +#: error.c:464 msgid "bad command type" msgstr "不當的命令類型" -#: error.c:464 +#: error.c:465 msgid "bad connector" msgstr "不當的連接器" -#: error.c:465 +#: error.c:466 msgid "bad jump" msgstr "錯誤的跳轉" -#: error.c:503 +#: error.c:504 #, c-format msgid "%s: unbound variable" msgstr "%s: 未繫結的變數" -#: eval.c:242 +#: eval.c:209 #, c-format msgid "\atimed out waiting for input: auto-logout\n" msgstr "\a 等待輸入逾時:自動登出\n" -#: execute_cmd.c:536 +#: execute_cmd.c:527 #, c-format msgid "cannot redirect standard input from /dev/null: %s" msgstr "無法從 /dev/null 重定向標準輸入: %s" -#: execute_cmd.c:1294 +#: execute_cmd.c:1275 #, c-format msgid "TIMEFORMAT: `%c': invalid format character" msgstr "時間格式:「%c」: 無效的格式字元" -#: execute_cmd.c:2330 +#: execute_cmd.c:2273 #, c-format msgid "execute_coproc: coproc [%d:%s] still exists" -msgstr "" +msgstr "execute_coproc:coproc [%d:%s] 仍然存在" -#: execute_cmd.c:2456 +#: execute_cmd.c:2377 msgid "pipe error" msgstr "管道錯誤" -#: execute_cmd.c:4624 -#, fuzzy, c-format +#: execute_cmd.c:4496 +#, c-format msgid "eval: maximum eval nesting level exceeded (%d)" -msgstr "%s: 超出最大函數巢狀層數 (%d)" +msgstr "eval:超出最大 eval 巢狀層數 (%d)" -#: execute_cmd.c:4636 -#, fuzzy, c-format +#: execute_cmd.c:4508 +#, c-format msgid "%s: maximum source nesting level exceeded (%d)" -msgstr "%s: 超出最大函數巢狀層數 (%d)" +msgstr "%s: 超出最大來源巢狀層數 (%d)" -#: execute_cmd.c:4742 +#: execute_cmd.c:4616 #, c-format msgid "%s: maximum function nesting level exceeded (%d)" msgstr "%s: 超出最大函數巢狀層數 (%d)" -#: execute_cmd.c:5285 +#: execute_cmd.c:5144 #, c-format msgid "%s: restricted: cannot specify `/' in command names" msgstr "%s: 受限的: 無法在命令名稱中使用「/」" -#: execute_cmd.c:5383 +#: execute_cmd.c:5232 #, c-format msgid "%s: command not found" msgstr "%s:命令找不到" -#: execute_cmd.c:5627 +#: execute_cmd.c:5470 #, c-format msgid "%s: %s" msgstr "%s: %s" -#: execute_cmd.c:5665 +#: execute_cmd.c:5508 #, c-format msgid "%s: %s: bad interpreter" msgstr "%s: %s: 不當的直譯器" -#: execute_cmd.c:5702 +#: execute_cmd.c:5545 #, c-format msgid "%s: cannot execute binary file: %s" msgstr "%s: 無法執行二進位檔案: %s" -#: execute_cmd.c:5788 +#: execute_cmd.c:5623 #, c-format msgid "`%s': is a special builtin" msgstr "「%s」: 特殊內建" -#: execute_cmd.c:5840 +#: execute_cmd.c:5675 #, c-format msgid "cannot duplicate fd %d to fd %d" msgstr "無法複製檔案描述符 %d 到檔案描述符 %d" -#: expr.c:263 +#: expr.c:259 msgid "expression recursion level exceeded" msgstr "表示式遞迴層次超出範圍" -#: expr.c:291 +#: expr.c:283 msgid "recursion stack underflow" msgstr "遞迴堆疊下限溢位" -#: expr.c:453 +#: expr.c:431 msgid "syntax error in expression" msgstr "表示式語法錯誤" -#: expr.c:497 +#: expr.c:475 msgid "attempted assignment to non-variable" msgstr "嘗試指派給非變數" -#: expr.c:506 -#, fuzzy -msgid "syntax error in variable assignment" -msgstr "表示式語法錯誤" - -#: expr.c:520 expr.c:886 +#: expr.c:495 expr.c:858 msgid "division by 0" msgstr "除 0" -#: expr.c:567 +#: expr.c:542 msgid "bug: bad expassign token" msgstr "錯誤:不當的表示式字組" -#: expr.c:621 +#: expr.c:595 msgid "`:' expected for conditional expression" msgstr "條件表示式需要「:」" -#: expr.c:947 +#: expr.c:919 msgid "exponent less than 0" msgstr "指數小於 0" -#: expr.c:1004 +#: expr.c:976 msgid "identifier expected after pre-increment or pre-decrement" msgstr "預增符或預減符後應跟有標識符" -#: expr.c:1030 +#: expr.c:1002 msgid "missing `)'" msgstr "缺少「)」" -#: expr.c:1081 expr.c:1458 +#: expr.c:1053 expr.c:1393 msgid "syntax error: operand expected" msgstr "語法錯誤: 需要運算元" -#: expr.c:1460 +#: expr.c:1395 msgid "syntax error: invalid arithmetic operator" msgstr "語法錯誤: 無效的算術運算子" -#: expr.c:1484 +#: expr.c:1419 #, c-format msgid "%s%s%s: %s (error token is \"%s\")" msgstr "%s%s%s: %s (錯誤字組是「%s」)" -#: expr.c:1542 +#: expr.c:1477 msgid "invalid arithmetic base" msgstr "無效的算術進位" -#: expr.c:1562 +#: expr.c:1497 msgid "value too great for base" msgstr "數值太大不可為算術進位的基底" -#: expr.c:1611 +#: expr.c:1546 #, c-format msgid "%s: expression error\n" msgstr "%s: 表示式錯誤\n" -#: general.c:69 +#: general.c:68 msgid "getcwd: cannot access parent directories" msgstr "getcwd: 無法訪問上層目錄" -#: input.c:99 subst.c:5858 +#: input.c:102 subst.c:5858 #, c-format msgid "cannot reset nodelay mode for fd %d" msgstr "無法為檔案描述符 %d 重置無延遲模式" -#: input.c:266 +#: input.c:271 #, c-format msgid "cannot allocate new file descriptor for bash input from fd %d" msgstr "無法從檔案描述符 %d 為 bash 的輸入獲取一個新的檔案描述符" -#: input.c:274 +#: input.c:279 #, c-format msgid "save_bash_input: buffer already exists for new fd %d" msgstr "save_bash_input: 已經存在新的檔案描述符 %d 的緩衝區" @@ -1148,158 +1140,153 @@ msgstr "save_bash_input: 已經存在新的檔案描述符 %d 的緩衝區" msgid "start_pipeline: pgrp pipe" msgstr "start_pipeline: 行程群組管道" -#: jobs.c:1080 +#: jobs.c:1035 #, c-format msgid "forked pid %d appears in running job %d" msgstr "生成的行程識別號 %d 顯示為執行中的工作 %d" -#: jobs.c:1199 +#: jobs.c:1154 #, c-format msgid "deleting stopped job %d with process group %ld" msgstr "刪除行程群組 %2$ld 中已停止的工作 %1$d" -#: jobs.c:1303 +#: jobs.c:1258 #, c-format msgid "add_process: process %5ld (%s) in the_pipeline" msgstr "add_process: 行程 %5ld(%s) 進入 the_pipeline" -#: jobs.c:1306 +#: jobs.c:1261 #, c-format msgid "add_process: pid %5ld (%s) marked as still alive" msgstr "add_process: 行程識別號 %5ld(%s) 標註為仍活著" -#: jobs.c:1635 +#: jobs.c:1590 #, c-format msgid "describe_pid: %ld: no such pid" msgstr "describe_pid: %ld: 無此行程識別號" -#: jobs.c:1650 +#: jobs.c:1605 #, c-format msgid "Signal %d" msgstr "訊號 %d" -#: jobs.c:1664 jobs.c:1690 +#: jobs.c:1619 jobs.c:1645 msgid "Done" msgstr "已完成" -#: jobs.c:1669 siglist.c:123 +#: jobs.c:1624 siglist.c:123 msgid "Stopped" msgstr "已停止" -#: jobs.c:1673 +#: jobs.c:1628 #, c-format msgid "Stopped(%s)" msgstr "已停止(%s)" -#: jobs.c:1677 +#: jobs.c:1632 msgid "Running" msgstr "執行中" -#: jobs.c:1694 +#: jobs.c:1649 #, c-format msgid "Done(%d)" msgstr "已完成(%d)" -#: jobs.c:1696 +#: jobs.c:1651 #, c-format msgid "Exit %d" msgstr "退出 %d" -#: jobs.c:1699 +#: jobs.c:1654 msgid "Unknown status" msgstr "不明狀態" -#: jobs.c:1786 +#: jobs.c:1741 #, c-format msgid "(core dumped) " msgstr "(核心已傾印)" -#: jobs.c:1805 +#: jobs.c:1760 #, c-format msgid " (wd: %s)" msgstr " (工作目錄: %s)" -#: jobs.c:2033 +#: jobs.c:1985 #, c-format msgid "child setpgid (%ld to %ld)" msgstr "子行程 setpgid (%ld 到 %ld)" -#: jobs.c:2395 nojobs.c:657 +#: jobs.c:2347 nojobs.c:654 #, c-format msgid "wait: pid %ld is not a child of this shell" msgstr "wait: 行程識別號 %ld 不是當前 shell 的子行程" -#: jobs.c:2687 +#: jobs.c:2602 #, c-format msgid "wait_for: No record of process %ld" msgstr "wiat_for: 沒有行程 %ld 的記錄" -#: jobs.c:3048 +#: jobs.c:2929 #, c-format msgid "wait_for_job: job %d is stopped" msgstr "wait_for_job: 工作 %d 已停止" -#: jobs.c:3355 +#: jobs.c:3221 #, c-format msgid "%s: job has terminated" msgstr "%s: 工作已經終止" -#: jobs.c:3364 +#: jobs.c:3230 #, c-format msgid "%s: job %d already in background" msgstr "%s: 工作 %d 已在背景執行" -#: jobs.c:3590 +#: jobs.c:3455 msgid "waitchld: turning on WNOHANG to avoid indefinite block" msgstr "waitchld: 開啟 WNOHANG 以避免無限阻塞" -#: jobs.c:4114 +#: jobs.c:3970 #, c-format msgid "%s: line %d: " msgstr "%s: 第 %d 列:" -#: jobs.c:4128 nojobs.c:900 +#: jobs.c:3984 nojobs.c:897 #, c-format msgid " (core dumped)" msgstr " (核心已傾印)" -#: jobs.c:4140 jobs.c:4153 +#: jobs.c:3996 jobs.c:4009 #, c-format msgid "(wd now: %s)\n" msgstr "(當前工作目錄:%s)\n" -#: jobs.c:4185 +#: jobs.c:4041 msgid "initialize_job_control: getpgrp failed" msgstr "initialize_job_control: getpgrp 失敗" -#: jobs.c:4241 -#, fuzzy -msgid "initialize_job_control: no job control in background" -msgstr "initialize_job_control: 列規律" - -#: jobs.c:4257 +#: jobs.c:4104 msgid "initialize_job_control: line discipline" msgstr "initialize_job_control: 列規律" -#: jobs.c:4267 +#: jobs.c:4114 msgid "initialize_job_control: setpgid" msgstr "initialize_job_control: setpgid" -#: jobs.c:4288 jobs.c:4297 +#: jobs.c:4135 jobs.c:4144 #, c-format msgid "cannot set terminal process group (%d)" msgstr "無法設定終端行程群組(%d)" -#: jobs.c:4302 +#: jobs.c:4149 msgid "no job control in this shell" msgstr "此 shell 中無工作控制" -#: lib/malloc/malloc.c:306 +#: lib/malloc/malloc.c:296 #, c-format msgid "malloc: failed assertion: %s\n" msgstr "malloc: 主張失敗: %s\n" -#: lib/malloc/malloc.c:322 +#: lib/malloc/malloc.c:312 #, c-format msgid "" "\r\n" @@ -1308,39 +1295,39 @@ msgstr "" "\r\n" "malloc: %s:%d: 主張已修補\r\n" -#: lib/malloc/malloc.c:323 +#: lib/malloc/malloc.c:313 msgid "unknown" msgstr "不明" -#: lib/malloc/malloc.c:811 +#: lib/malloc/malloc.c:801 msgid "malloc: block on free list clobbered" msgstr "malloc: 空閒串列中的區塊損壞" -#: lib/malloc/malloc.c:888 +#: lib/malloc/malloc.c:878 msgid "free: called with already freed block argument" msgstr "free: 用已經釋放的區塊做為呼叫引數" -#: lib/malloc/malloc.c:891 +#: lib/malloc/malloc.c:881 msgid "free: called with unallocated block argument" msgstr "free: 用未分配的區塊做為呼叫引數" -#: lib/malloc/malloc.c:910 +#: lib/malloc/malloc.c:900 msgid "free: underflow detected; mh_nbytes out of range" msgstr "free: 檢測到下限溢位;mh_nbytes 超出範圍" -#: lib/malloc/malloc.c:916 +#: lib/malloc/malloc.c:906 msgid "free: start and end chunk sizes differ" msgstr "free: 啟始和末尾區塊大小不一致" -#: lib/malloc/malloc.c:1015 +#: lib/malloc/malloc.c:1005 msgid "realloc: called with unallocated block argument" msgstr "realloc: 用未分配的區塊做為呼叫引數" -#: lib/malloc/malloc.c:1030 +#: lib/malloc/malloc.c:1020 msgid "realloc: underflow detected; mh_nbytes out of range" msgstr "realloc: 檢測到下限溢位;mh_nbytes 超出範圍" -#: lib/malloc/malloc.c:1036 +#: lib/malloc/malloc.c:1026 msgid "realloc: start and end chunk sizes differ" msgstr "realloc: 啟始和末尾區塊大小不一致" @@ -1382,22 +1369,22 @@ msgstr "%s:不當的網路路徑規格" msgid "network operations not supported" msgstr "不支持網路操作" -#: locale.c:205 +#: locale.c:200 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s)" msgstr "setlocale: LC_ALL: 無法變更語區選項 (%s)" -#: locale.c:207 +#: locale.c:202 #, c-format msgid "setlocale: LC_ALL: cannot change locale (%s): %s" msgstr "setlocale: LC_ALL: 無法變更語區選項 (%s): %s" -#: locale.c:272 +#: locale.c:259 #, c-format msgid "setlocale: %s: cannot change locale (%s)" msgstr "setlocale: %s: 無法變更語區選項 (%s)" -#: locale.c:274 +#: locale.c:261 #, c-format msgid "setlocale: %s: cannot change locale (%s): %s" msgstr "setlocale: %s: 無法變更語區選項 (%s): %s" @@ -1415,263 +1402,257 @@ msgstr "您有新郵件在 $_" msgid "The mail in %s has been read\n" msgstr "郵件在 %s 已閱讀\n" -#: make_cmd.c:317 +#: make_cmd.c:329 msgid "syntax error: arithmetic expression required" msgstr "語法錯誤:需要算式" -#: make_cmd.c:319 +#: make_cmd.c:331 msgid "syntax error: `;' unexpected" msgstr "語法錯誤:「;」意外" -#: make_cmd.c:320 +#: make_cmd.c:332 #, c-format msgid "syntax error: `((%s))'" msgstr "語法錯誤:「((%s))」" -#: make_cmd.c:572 +#: make_cmd.c:584 #, c-format msgid "make_here_document: bad instruction type %d" msgstr "make_here_document:不當的指示類型 %d" -#: make_cmd.c:657 +#: make_cmd.c:669 #, c-format msgid "here-document at line %d delimited by end-of-file (wanted `%s')" msgstr "立即文件在第 %d 列被檔案結束符分隔 (需要「%s」)" -#: make_cmd.c:756 +#: make_cmd.c:768 #, c-format msgid "make_redirection: redirection instruction `%d' out of range" msgstr "make_redirection:重新導向指示「%d」超出範圍" -#: parse.y:2369 +#: parse.y:2324 #, c-format -msgid "" -"shell_getc: shell_input_line_size (%zu) exceeds SIZE_MAX (%lu): line " -"truncated" -msgstr "" +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:2772 +#: parse.y:2700 msgid "maximum here-document count exceeded" -msgstr "" +msgstr "超過此處檔案上限最大值" -#: parse.y:3511 parse.y:3881 +#: parse.y:3390 parse.y:3748 #, c-format msgid "unexpected EOF while looking for matching `%c'" msgstr "尋找匹配的「%c」時遇到了未預期的檔案結束符" -#: parse.y:4581 +#: parse.y:4410 msgid "unexpected EOF while looking for `]]'" msgstr "尋找「]]」時遇到了未預期的檔案結束符" -#: parse.y:4586 +#: parse.y:4415 #, c-format msgid "syntax error in conditional expression: unexpected token `%s'" msgstr "條件表示式中有語法錯誤: 未預期的字組「%s」" -#: parse.y:4590 +#: parse.y:4419 msgid "syntax error in conditional expression" msgstr "語法錯誤,在有條件的表示式" -#: parse.y:4668 +#: parse.y:4497 #, c-format msgid "unexpected token `%s', expected `)'" msgstr "未預期的字組「%s」,需要「)」" -#: parse.y:4672 +#: parse.y:4501 msgid "expected `)'" msgstr "預期「)」" -#: parse.y:4700 +#: parse.y:4529 #, c-format msgid "unexpected argument `%s' to conditional unary operator" msgstr "一元條件運算子使用了未預期的引數「%s」" -#: parse.y:4704 +#: parse.y:4533 msgid "unexpected argument to conditional unary operator" msgstr "一元條件運算子使用了未預期的引數" -#: parse.y:4750 +#: parse.y:4579 #, c-format msgid "unexpected token `%s', conditional binary operator expected" msgstr "未預期的字組「%s」,需要二元條件運算子" -#: parse.y:4754 +#: parse.y:4583 msgid "conditional binary operator expected" msgstr "需要二元條件運算子" -#: parse.y:4776 +#: parse.y:4605 #, c-format msgid "unexpected argument `%s' to conditional binary operator" msgstr "二元條件運算子使用了未預期的引數「%s」" -#: parse.y:4780 +#: parse.y:4609 msgid "unexpected argument to conditional binary operator" msgstr "二元條件運算子使用了未預期的引數" -#: parse.y:4791 +#: parse.y:4620 #, c-format msgid "unexpected token `%c' in conditional command" msgstr "條件命令中有未預期的字組「%c」" -#: parse.y:4794 +#: parse.y:4623 #, c-format msgid "unexpected token `%s' in conditional command" msgstr "條件命令中有未預期的字組「%s」" -#: parse.y:4798 +#: parse.y:4627 #, c-format msgid "unexpected token %d in conditional command" msgstr "條件命令中有未預期的字組 %d" -#: parse.y:6220 +#: parse.y:5996 #, c-format msgid "syntax error near unexpected token `%s'" msgstr "未預期的字組「%s」附近有語法錯誤" -#: parse.y:6238 +#: parse.y:6014 #, c-format msgid "syntax error near `%s'" msgstr "「%s」附近有語法錯誤" -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error: unexpected end of file" msgstr "語法錯誤: 未預期的檔案結尾" -#: parse.y:6248 +#: parse.y:6024 msgid "syntax error" msgstr "語法錯誤" -#: parse.y:6310 +#: parse.y:6086 #, c-format msgid "Use \"%s\" to leave the shell.\n" msgstr "使用「%s」退出 shell 。\n" -#: parse.y:6472 +#: parse.y:6248 msgid "unexpected EOF while looking for matching `)'" msgstr "尋找匹配的「)」時遇到了未預期的檔案結束符" -#: pcomplete.c:1132 +#: pcomplete.c:1126 #, c-format msgid "completion: function `%s' not found" msgstr "補完: 未找到函數「%s」" -#: pcomplete.c:1722 +#: pcomplete.c:1646 #, 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: 空的補完規格" -#: print_cmd.c:300 +#: print_cmd.c:302 #, c-format msgid "print_command: bad connector `%d'" msgstr "print_command: 錯誤的條件連接符「%d」" -#: print_cmd.c:373 +#: print_cmd.c:375 #, c-format msgid "xtrace_set: %d: invalid file descriptor" msgstr "xtrace_set: %d: 無效的檔案描述符" -#: print_cmd.c:378 +#: print_cmd.c:380 msgid "xtrace_set: NULL file pointer" msgstr "xtrace_set: 空的檔案指標" -#: print_cmd.c:382 +#: 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:1538 +#: print_cmd.c:1534 #, c-format msgid "cprintf: `%c': invalid format character" msgstr "cprintf:「%c」: 無效的格式字元" -#: redir.c:121 redir.c:167 +#: redir.c:124 redir.c:171 msgid "file descriptor out of range" msgstr "檔案描述符超出範圍" -#: redir.c:174 +#: redir.c:178 #, c-format msgid "%s: ambiguous redirect" msgstr "%s: 模稜兩可的重定向" -#: redir.c:178 +#: redir.c:182 #, c-format msgid "%s: cannot overwrite existing file" msgstr "%s: 無法覆寫已存在的檔案" -#: redir.c:183 +#: redir.c:187 #, c-format msgid "%s: restricted: cannot redirect output" msgstr "%s: 受限的: 無法重定向輸出" -#: redir.c:188 +#: redir.c:192 #, c-format msgid "cannot create temp file for here-document: %s" msgstr "無法為立即文件建立臨時檔案: %s" -#: redir.c:192 +#: redir.c:196 #, c-format msgid "%s: cannot assign fd to variable" msgstr "%s: 無法將檔案描述符指派給變數" -#: redir.c:588 +#: redir.c:586 msgid "/dev/(tcp|udp)/host/port not supported without networking" msgstr "沒有網路時不支援 /dev/(tcp|udp)/host/port" -#: redir.c:870 redir.c:985 redir.c:1046 redir.c:1211 +#: redir.c:868 redir.c:983 redir.c:1044 redir.c:1209 msgid "redirection error: cannot duplicate fd" msgstr "重定向錯誤: 無法複製檔案描述符" -#: shell.c:343 +#: shell.c:347 msgid "could not find /tmp, please create!" msgstr "無法找到 /tmp ,請建立" -#: shell.c:347 +#: shell.c:351 msgid "/tmp must be a valid directory name" msgstr "/tmp 必須為有效的目錄名稱" -#: shell.c:798 -msgid "pretty-printing mode ignored in interactive shells" -msgstr "" - -#: shell.c:940 +#: shell.c:927 #, c-format msgid "%c%c: invalid option" msgstr "%c%c:無效選項" -#: shell.c:1299 -#, fuzzy, c-format +#: shell.c:1282 +#, c-format msgid "cannot set uid to %d: effective uid %d" -msgstr "無法為檔案描述符 %d 重置無延遲模式" +msgstr "無法設定 UID 至 %d:有效的 UID %d" -#: shell.c:1306 -#, fuzzy, c-format +#: shell.c:1289 +#, c-format msgid "cannot set gid to %d: effective gid %d" -msgstr "無法為檔案描述符 %d 重置無延遲模式" +msgstr "無法設定 GID 至 %d:有效的 GID %d" -#: shell.c:1494 +#: shell.c:1458 msgid "cannot start debugger; debugging mode disabled" -msgstr "" +msgstr "無法開啟偵錯器;偵錯模式已停用" -#: shell.c:1608 -#, fuzzy, c-format +#: shell.c:1566 +#, c-format msgid "%s: Is a directory" msgstr "%s: 是一個目錄" -#: shell.c:1826 +#: shell.c:1777 msgid "I have no name!" msgstr "我沒有名字!" -#: shell.c:1980 +#: shell.c:1930 #, c-format msgid "GNU bash, version %s-(%s)\n" msgstr "GNU bash,版本 %s-(%s)\n" -#: shell.c:1981 +#: shell.c:1931 #, c-format msgid "" "Usage:\t%s [GNU long option] [option] ...\n" @@ -1680,49 +1661,49 @@ msgstr "" "用法:\t%s [GNU 長選項] [選項] …\n" "\t%s [GNU 長選項] [選項] 指令稿檔案 …\n" -#: shell.c:1983 +#: shell.c:1933 msgid "GNU long options:\n" msgstr "GNU 長選項:\n" -#: shell.c:1987 +#: shell.c:1937 msgid "Shell options:\n" msgstr "Shell 選項:\n" -#: shell.c:1988 +#: shell.c:1938 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:2003 +#: shell.c:1953 #, c-format msgid "\t-%s or -o option\n" msgstr "\t-%s or -o 選項\n" -#: shell.c:2009 +#: shell.c:1959 #, c-format msgid "Type `%s -c \"help set\"' for more information about shell options.\n" msgstr "輸入「%s -c \"help set\"」更多關於 shell 選項的訊息。\n" -#: shell.c:2010 +#: shell.c:1960 #, c-format msgid "Type `%s -c help' for more information about shell builtin commands.\n" msgstr "輸入「%s -c help」更多關於內建 shell 命令的訊息。\n" -#: shell.c:2011 +#: shell.c:1961 #, c-format msgid "Use the `bashbug' command to report bugs.\n" msgstr "使用「bashbug」命令通報程式錯誤。\n" -#: shell.c:2013 +#: shell.c:1963 #, c-format msgid "bash home page: \n" -msgstr "" +msgstr "bash 官網:\n" -#: shell.c:2014 +#: shell.c:1964 #, c-format msgid "General help using GNU software: \n" -msgstr "" +msgstr "GNU 軟體的常見使用說明:\n" -#: sig.c:695 +#: sig.c:707 #, c-format msgid "sigprocmask: %d: invalid operation" msgstr "sigprocmask: %d:無效操作" @@ -1896,21 +1877,21 @@ msgstr "不明訊號 #" msgid "Unknown Signal #%d" msgstr "不明訊號 #%d" -#: subst.c:1450 subst.c:1641 +#: subst.c:1445 subst.c:1608 #, c-format msgid "bad substitution: no closing `%s' in %s" msgstr "錯誤的替換: 在 %2$s 中沒有閉合的「%1$s」" -#: subst.c:3209 +#: subst.c:3154 #, c-format msgid "%s: cannot assign list to array member" msgstr "%s: 無法將串列指派給陣列成員" -#: subst.c:5734 subst.c:5750 +#: subst.c:5740 subst.c:5756 msgid "cannot make pipe for process substitution" msgstr "無法為行程替換建立管道" -#: subst.c:5796 +#: subst.c:5798 msgid "cannot make child for process substitution" msgstr "無法為行程替換建立子行程" @@ -1929,75 +1910,67 @@ msgstr "無法開啟命名管道 %s 進行寫入" msgid "cannot duplicate named pipe %s as fd %d" msgstr "無法將命名管道 %s 做為檔案描述符 %d 複製" -#: subst.c:5990 -#, fuzzy +#: subst.c:5959 msgid "command substitution: ignored null byte in input" -msgstr "錯誤的替換: 在 %s 中沒有閉合的「`」" +msgstr "指令替換:在輸入中忽略了空位元組" -#: subst.c:6121 +#: subst.c:6083 msgid "cannot make pipe for command substitution" msgstr "無法為命令替換建立管道" -#: subst.c:6164 +#: subst.c:6127 msgid "cannot make child for command substitution" msgstr "無法為命令替換建立子行程" -#: subst.c:6190 +#: subst.c:6153 msgid "command_substitute: cannot duplicate pipe as fd 1" msgstr "command_substitute: 無法將管道複製為檔案描述符 1" -#: subst.c:6641 subst.c:9483 +#: subst.c:6580 subst.c:8939 #, c-format msgid "%s: invalid variable name for name reference" msgstr "%s: 無效的引用變數名" -#: subst.c:6737 subst.c:6755 subst.c:6903 -#, fuzzy, c-format +#: subst.c:6666 subst.c:8351 subst.c:8371 +#, c-format +msgid "%s: bad substitution" +msgstr "%s: 錯誤的替換" + +#: subst.c:6800 +#, c-format msgid "%s: invalid indirect expansion" -msgstr "%s: 無效的列數" +msgstr "%s: 無效的間接擴展" -#: subst.c:6771 subst.c:6910 -#, fuzzy, c-format +#: subst.c:6807 +#, c-format msgid "%s: invalid variable name" -msgstr "「%s」: 無效的別名" +msgstr "%s:無效的變數名稱" -#: subst.c:6962 -#, fuzzy, c-format -msgid "%s: parameter not set" -msgstr "%s: 參數為空或未設定" - -#: subst.c:6964 +#: subst.c:6854 #, c-format msgid "%s: parameter null or not set" msgstr "%s: 參數為空或未設定" -#: subst.c:7201 subst.c:7216 +#: subst.c:7089 subst.c:7104 #, c-format msgid "%s: substring expression < 0" msgstr "%s: 子串表示式 < 0" -#: subst.c:8839 subst.c:8860 -#, c-format -msgid "%s: bad substitution" -msgstr "%s: 錯誤的替換" - -#: subst.c:8948 +#: subst.c:8450 #, c-format msgid "$%s: cannot assign in this way" msgstr "$%s: 無法如此指派" -#: subst.c:9346 -msgid "" -"future versions of the shell will force evaluation as an arithmetic " -"substitution" +#: subst.c:8802 +msgid "future versions of the shell will force evaluation as an arithmetic substitution" msgstr "未來版本的 shell 會強制以算術替換求值" -#: subst.c:9903 +#: subst.c:9349 #, c-format msgid "bad substitution: no closing \"`\" in %s" msgstr "錯誤的替換: 在 %s 中沒有閉合的「`」" -#: subst.c:10907 +#: subst.c:10298 #, c-format msgid "no match: %s" msgstr "無匹配: %s" @@ -2020,122 +1993,116 @@ msgstr "需要「)」" msgid "`)' expected, found %s" msgstr "需要「)」,得到 %s" -#: test.c:282 test.c:748 test.c:751 +#: test.c:282 test.c:744 test.c:747 #, c-format msgid "%s: unary operator expected" msgstr "%s: 需要一元表示式" -#: test.c:469 test.c:791 +#: test.c:469 test.c:787 #, c-format msgid "%s: binary operator expected" msgstr "%s: 需要二元表示式" -#: test.c:873 +#: test.c:869 msgid "missing `]'" msgstr "缺少「]」" -#: trap.c:216 +#: trap.c:224 msgid "invalid signal number" msgstr "無效信號數字" -#: trap.c:379 +#: trap.c:387 #, c-format msgid "run_pending_traps: bad value in trap_list[%d]: %p" msgstr "run_pending_traps: trap_list[%d] 中的錯誤值: %p" -#: trap.c:383 +#: trap.c:391 #, c-format -msgid "" -"run_pending_traps: signal handler is SIG_DFL, resending %d (%s) to myself" +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:439 +#: trap.c:447 #, c-format msgid "trap_handler: bad signal %d" msgstr "trap_handler:不當的信號 %d" -#: variables.c:399 +#: variables.c:409 #, c-format msgid "error importing function definition for `%s'" msgstr "錯誤,輸入的函數定義為「%s」" -#: variables.c:801 +#: variables.c:814 #, c-format msgid "shell level (%d) too high, resetting to 1" msgstr "shell 層次 (%d) 太高,重置為 1" -#: variables.c:2512 +#: variables.c:2413 msgid "make_local_variable: no function context at current scope" msgstr "make_local_variable: 當前作用域中沒有函數語境" -#: variables.c:2531 +#: variables.c:2432 #, c-format msgid "%s: variable may not be assigned value" msgstr "%s: 變數不可指派值" -#: variables.c:3246 -#, fuzzy, c-format +#: variables.c:3043 +#, c-format msgid "%s: assigning integer to name reference" -msgstr "%s: 無效的引用變數名" +msgstr "%s:指定數字至名稱參考" -#: variables.c:4149 +#: variables.c:3940 msgid "all_local_variables: no function context at current scope" msgstr "all_local_variables: 當前作用域中沒有函數語境" -#: variables.c:4437 +#: variables.c:4218 #, c-format msgid "%s has null exportstr" msgstr "%s 有空的 exportstr" -#: variables.c:4442 variables.c:4451 +#: variables.c:4223 variables.c:4232 #, c-format msgid "invalid character %d in exportstr for %s" msgstr "%2$s 的 exportstr 中有無效的字元 %1$d" -#: variables.c:4457 +#: variables.c:4238 #, c-format msgid "no `=' in exportstr for %s" msgstr "%s 的 exportstr 中沒有「=」" -#: variables.c:4911 +#: variables.c:4684 msgid "pop_var_context: head of shell_variables not a function context" msgstr "pop_var_context: shell_variables 的前端不是函數語境" -#: variables.c:4924 +#: variables.c:4697 msgid "pop_var_context: no global_variables context" msgstr "pop_var_context: 沒有 global_variables 語境" -#: variables.c:4999 +#: variables.c:4772 msgid "pop_scope: head of shell_variables not a temporary environment scope" msgstr "pop_scope: shell_variables 的前端不是臨時環境作用域" -#: variables.c:5862 +#: variables.c:5619 #, c-format msgid "%s: %s: cannot open as FILE" msgstr "%s: %s: 無法做為檔案開啟" -#: variables.c:5867 +#: variables.c:5624 #, c-format msgid "%s: %s: invalid value for trace file descriptor" msgstr "%s: %s: 追蹤檔案描述符的值無效" -#: variables.c:5912 +#: variables.c:5669 #, 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 自由軟體基金會" +msgstr "著作權所有 (C) 2016 自由軟體基金會" #: version.c:47 version2.c:47 -msgid "" -"License GPLv3+: GNU GPL version 3 or later \n" -msgstr "" -"許可證 GPLv3+: GNU GPL 許可證第三版或者更新版本 \n" +msgid "License GPLv3+: GNU GPL version 3 or later \n" +msgstr "許可證 GPLv3+: GNU GPL 許可證第三版或者更新版本 \n" #: version.c:86 version2.c:86 #, c-format @@ -2150,22 +2117,22 @@ msgstr "本軟體是自由軟體,您可以自由地更改和重新發布。" msgid "There is NO WARRANTY, to the extent permitted by law." msgstr "在法律許可的情況下特此明示,本軟體不提供任何擔保。" -#: xmalloc.c:93 +#: xmalloc.c:91 #, c-format msgid "%s: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: 無法分配 %lu 位元組 (已分配 %lu 位元組)" -#: xmalloc.c:95 +#: xmalloc.c:93 #, c-format msgid "%s: cannot allocate %lu bytes" msgstr "%s: 無法分配 %lu 位元組" -#: xmalloc.c:165 +#: xmalloc.c:163 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes (%lu bytes allocated)" msgstr "%s: %s:%d: 無法分配 %lu 位元組 (已分配 %lu 位元組)" -#: xmalloc.c:167 +#: xmalloc.c:165 #, c-format msgid "%s: %s:%d: cannot allocate %lu bytes" msgstr "%s: %s:%d: 無法分配 %lu 位元組" @@ -2179,12 +2146,8 @@ msgid "unalias [-a] name [name ...]" msgstr "unalias [-a] 名稱 [名稱 …]" #: 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 [-lpvsPSVX] [-m 鍵對映] [-f 檔名] [-q 名稱] [-u 名稱] [-r 鍵序列] [-x 鍵" -"序列:shell- 命令] [鍵序列:readline- 函數 或 readline- 命令]" +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 [-lpvsPSVX] [-m 鍵對映] [-f 檔名] [-q 名稱] [-u 名稱] [-r 鍵序列] [-x 鍵序列:shell- 命令] [鍵序列:readline- 函數 或 readline- 命令]" #: builtins.c:56 msgid "break [n]" @@ -2219,9 +2182,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] ..." @@ -2280,41 +2242,28 @@ msgid "help [-dms] [pattern ...]" msgstr "help [-dms] [模式 …]" #: builtins.c:123 -msgid "" -"history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg " -"[arg...]" -msgstr "" -"history [-c] [-d 偏移量] [n] 或 history -anrw [檔名] 或 history -ps 引數 [參" -"數…]" +msgid "history [-c] [-d offset] [n] or history -anrw [filename] or history -ps arg [arg...]" +msgstr "history [-c] [-d 偏移量] [n] 或 history -anrw [檔名] 或 history -ps 引數 [參數…]" #: builtins.c:127 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 "" -"kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l " -"[sigspec]" -msgstr "" -"kill [-s 訊號規格 | -n 訊號編號 | - 訊號規格] 行程識別號 | 工作規格 … 或 " -"kill -l [訊號規格]" +msgid "kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]" +msgstr "kill [-s 訊號規格 | -n 訊號編號 | - 訊號規格] 行程識別號 | 工作規格 … 或 kill -l [訊號規格]" #: builtins.c:136 msgid "let arg [arg ...]" msgstr "let 引數 [引數 …]" #: 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 陣列] [-d 分隔符] [-i 緩衝區文字] [-n 讀取字元數] [-N 讀取字" -"符數] [-p 提示符] [-t 逾時] [-u 檔案描述符] [名稱 …]" +msgid "read [-ers] [-a array] [-d delim] [-i text] [-n nchars] [-N nchars] [-p prompt] [-t timeout] [-u fd] [name ...]" +msgstr "read [-ers] [-a 陣列] [-d 分隔符] [-i 緩衝區文字] [-n 讀取字元數] [-N 讀取字符數] [-p 提示符] [-t 逾時] [-u 檔案描述符] [名稱 …]" #: builtins.c:140 msgid "return [n]" @@ -2369,17 +2318,15 @@ 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 -#, fuzzy -msgid "wait [-fn] [id ...]" +msgid "wait [-n] [id ...]" msgstr "wait [-n] [編號 …]" #: builtins.c:181 @@ -2407,9 +2354,7 @@ msgid "case WORD in [PATTERN [| PATTERN]...) COMMANDS ;;]... esac" msgstr "case 詞 in [模式 [| 模式]…) 命令 ;;]… esac" #: builtins.c:194 -msgid "" -"if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else " -"COMMANDS; ] fi" +msgid "if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi" msgstr "if 命令 ; then 命令 ; [ elif 命令 ; then 命令 ; ]… [ else 命令 ; ] fi" #: builtins.c:196 @@ -2469,47 +2414,26 @@ msgid "printf [-v var] format [arguments]" msgstr "printf [-v var] 格式 [引數]" #: builtins.c:231 -msgid "" -"complete [-abcdefgjksuv] [-pr] [-DE] [-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 字尾] [名稱 …]" +msgid "complete [-abcdefgjksuv] [-pr] [-DE] [-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 字尾] [名稱 …]" #: 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 字尾] [字詞]" +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] [-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] [名稱 …]" #: 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 定量] " -"[陣列]" +msgid "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "mapfile [-d delim] [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" #: builtins.c:244 -#, fuzzy -msgid "" -"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 定量] " -"[陣列]" +msgid "readarray [-n count] [-O origin] [-s count] [-t] [-u fd] [-C callback] [-c quantum] [array]" +msgstr "readarray [-n 計數] [-O 起始序號] [-s 計數] [-t] [-u fd] [-C 回呼] [-c 定量] [陣列]" #: builtins.c:256 -#, fuzzy msgid "" "Define or display aliases.\n" " \n" @@ -2524,8 +2448,7 @@ msgid "" " -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" +" alias returns true unless a NAME is supplied for which no alias has been\n" " defined." msgstr "" "定義或顯示別名。\n" @@ -2545,7 +2468,6 @@ msgstr "" " 回傳值為真。" #: builtins.c:278 -#, fuzzy msgid "" "Remove each NAME from the list of defined aliases.\n" " \n" @@ -2557,12 +2479,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" @@ -2574,30 +2495,25 @@ msgid "" " 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" +" 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" +" -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" +" -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" +" -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" @@ -2612,23 +2528,20 @@ msgstr "" " \n" " 選項:\n" " -m 鍵對映 在此命令執行過程中使用指定的鍵對映。\n" -" 可被接受的鍵對映名字有 emacs、emacs-standard、emacs-" -"meta、\n" +" 可被接受的鍵對映名字有 emacs、emacs-standard、emacs-meta、\n" " emacs-ctlx、vi、vi-move、vi-command、和 vi-insert。\n" " -l 列出函數名稱。\n" " -P 列出函數名稱和繫結。\n" " -p 以可以重新用作輸入的格式列出函數名稱和繫結。\n" " -S 列出可以啟動巨集的鍵序列以及它們的值\n" -" -s 以可以重新用作輸入的格式列出可以啟動巨集的鍵以及它們的" -"值。\n" +" -s 以可以重新用作輸入的格式列出可以啟動巨集的鍵以及它們的值。\n" " -V 列出變數名稱和它們的值\n" " -v 以可以重新用作輸入的格式列出變數的名稱和它們的值\n" " -q 函數名 查詢指定的函數可以由哪些鍵啟動。\n" " -u 函數名 反繫結所有繫結至指定函數的鍵。\n" " -r 鍵序列 取消指定鍵序列的繫結。\n" " -f 檔名 從指定檔案中讀取鍵繫結。\n" -" -x 鍵序列:shell 命令\t當指定的鍵序列被輸入時,執行指定的 shell 命" -"令。\n" +" -x 鍵序列:shell 命令\t當指定的鍵序列被輸入時,執行指定的 shell 命令。\n" " -X 以可被重用的形式列出用 -x 繫結的鍵序列和命令。\n" " \n" " 退出狀態:\n" @@ -2676,8 +2589,7 @@ msgid "" " \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" +" 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" @@ -2690,8 +2602,7 @@ msgstr "" " 並且希望在函數之內執行該 shell 內建的情況下有用處。\n" " \n" " 退出狀態:\n" -" 以 SHELL-BUILTIN 內建的退出狀態為準,或者如果 SHELL-BUILTIN 不是一個 " -"shell 內建時\n" +" 以 SHELL-BUILTIN 內建的退出狀態為準,或者如果 SHELL-BUILTIN 不是一個 shell 內建時\n" " 為假。。" #: builtins.c:369 @@ -2723,26 +2634,19 @@ msgstr "" " 果為 0。" #: builtins.c:387 -#, fuzzy msgid "" "Change the shell working directory.\n" " \n" -" Change the current directory to DIR. The default DIR is the value of " -"the\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" +" 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" +" 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" @@ -2758,13 +2662,11 @@ msgid "" " \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" +" `..' 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" +" Returns 0 if the directory is changed, and if $PWD is set successfully when\n" " -P is used; non-zero otherwise." msgstr "" "變更 shell 工作目錄。\n" @@ -2772,24 +2674,18 @@ msgstr "" " 變更當前目錄至 DIR 目錄。預設的 DIR 目錄是 shell 變數 HOME\n" " 的值。\n" " \n" -" 變數 CDPATH 定義了含有 DIR 的目錄搜尋路徑,其中不同的目錄名稱由冒號 (:)分" -"隔。\n" -" 一個空的目錄名稱表示當前目錄。如果要切換到的 DIR 由斜線 (/) 開頭,則 " -"CDPATH\n" +" 變數 CDPATH 定義了含有 DIR 的目錄搜尋路徑,其中不同的目錄名稱由冒號 (:)分隔。\n" +" 一個空的目錄名稱表示當前目錄。如果要切換到的 DIR 由斜線 (/) 開頭,則 CDPATH\n" " 變數不會被使用。\n" " \n" -" 如果路徑找不到,並且 shell 選項「cdable_vars」被設定,則引數詞被假定為一" -"個\n" +" 如果路徑找不到,並且 shell 選項「cdable_vars」被設定,則引數詞被假定為一個\n" " 變數名。如果該變數有值,則它的值被當做 DIR 目錄。\n" " \n" " 選項:\n" " -L\t強制跟隨符號鏈結: 在處理「..」之後解析 DIR 中的符號鏈結。\n" -" -P\t使用實體目錄結構而不跟隨符號鏈結: 在處理「..」之前解析 DIR 中的符" -"號鏈結。\n" -" -e\t如果使用了 -P 引數,但不能成功確定當前工作目錄時,回傳非零的回傳" -"值。\n" -" -@\t在支援擴展屬性的系統上,將一個有這些屬性的檔案當做有檔案屬性的目" -"錄。\n" +" -P\t使用實體目錄結構而不跟隨符號鏈結: 在處理「..」之前解析 DIR 中的符號鏈結。\n" +" -e\t如果使用了 -P 引數,但不能成功確定當前工作目錄時,回傳非零的回傳值。\n" +" -@\t在支援擴展屬性的系統上,將一個有這些屬性的檔案當做有檔案屬性的目錄。\n" " \n" " 預設情況下跟隨符號鏈結,如同指定「-L」。\n" " 「..」使用移除向前相鄰目錄名成員直到 DIR 開始或一個斜線的方式處理。\n" @@ -2798,7 +2694,6 @@ msgstr "" " 如果目錄變更,或在使用 -P 選項時 $PWD 修改成功時回傳 0,否則非零。" #: builtins.c:425 -#, fuzzy msgid "" "Print the name of the current working directory.\n" " \n" @@ -2865,13 +2760,11 @@ msgstr "" " 一律失敗。" #: builtins.c:471 -#, fuzzy 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" +" 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" @@ -2898,7 +2791,6 @@ msgstr "" " 回傳 COMMAND 命令的回傳狀態,或者當找不到 COMMAND 命令時失敗。" #: builtins.c:490 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2917,11 +2809,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 the value of each NAME to lower case on assignment\n" +" -l\tto convert NAMEs 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" +" -u\tto convert NAMEs to upper case on assignment\n" " -x\tto make NAMEs export\n" " \n" " Using `+' instead of `-' turns off the given attribute.\n" @@ -2929,8 +2821,7 @@ msgid "" " 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" +" 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" @@ -2965,13 +2856,12 @@ msgstr "" " 「let」命令)\n" " \n" " 在函數中使用時,「declare」使 NAME 成為本地變數,和「local」\n" -" 命令一致。\n" +" 命令一致。「-g」選項壓制這個行為\n" " \n" " 退出狀態:\n" " 回傳成功除非使用了無效選項或者發生錯誤。" #: builtins.c:530 -#, fuzzy msgid "" "Set variable values and attributes.\n" " \n" @@ -2979,7 +2869,7 @@ msgid "" msgstr "" "設定變數的值和屬性。\n" " \n" -" 廢棄。參見「help declare」。" +" 功能相同於「declare」。參見「help declare」。" #: builtins.c:538 msgid "" @@ -3004,16 +2894,13 @@ msgstr "" " 部以及子函數中可見。\n" " \n" " 退出狀態:\n" -" 回傳成功,除非使用了無效的選項、發生了指派錯誤或者 shell 不在執行一個函" -"數。" +" 回傳成功,除非使用了無效的選項、發生了指派錯誤或者 shell 不在執行一個函數。" #: 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" +" Display the ARGs, separated by a single space character and followed by a\n" " newline, on the standard output.\n" " \n" " Options:\n" @@ -3061,10 +2948,8 @@ msgstr "" " \\t\t橫向製表符\n" " \\v\t縱向製表符\n" " \\\\\t反斜線\n" -" \\0nnn\t以 NNN (八進位)為 ASCII 碼的字元。 NNN 可以是 0 到 3 個八進位數" -"字\n" -" \\xHH\t以 HH (十六進位)為值的八進位字元。HH 可以是一個或兩個十六進位數" -"字\n" +" \\0nnn\t以 NNN (八進位)為 ASCII 碼的字元。 NNN 可以是 0 到 3 個八進位數字\n" +" \\xHH\t以 HH (十六進位)為值的八進位字元。HH 可以是一個或兩個十六進位數字\n" " \n" " 退出狀態:\n" " 回傳成功除非有寫入錯誤發生。" @@ -3145,8 +3030,7 @@ msgstr "" msgid "" "Execute arguments as a shell command.\n" " \n" -" Combine ARGs into a single string, use the result as input to the " -"shell,\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" @@ -3239,13 +3123,11 @@ msgstr "" " 有錯誤發生則回傳失敗。" #: builtins.c:688 -#, fuzzy 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" +" ARGUMENTS become the arguments to COMMAND. If COMMAND is not specified,\n" " any redirections take effect in the current shell.\n" " \n" " Options:\n" @@ -3253,13 +3135,11 @@ msgid "" " -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" +" 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." +" Returns success unless COMMAND is not found or a redirection error occurs." msgstr "" "使用指定命令替換 shell。\n" " \n" @@ -3294,8 +3174,7 @@ msgstr "" msgid "" "Exit a login shell.\n" " \n" -" Exits a login shell with exit status N. Returns an error if not " -"executed\n" +" Exits a login shell with exit status N. Returns an error if not executed\n" " in a login shell." msgstr "" "退出一個登入 shell。\n" @@ -3307,15 +3186,13 @@ msgstr "" 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" +" 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" +" -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" @@ -3329,8 +3206,7 @@ msgid "" " the last command.\n" " \n" " Exit Status:\n" -" Returns success or status of executed command; non-zero if an error " -"occurs." +" Returns success or status of executed command; non-zero if an error occurs." msgstr "" "從歷史記錄列表中顯示或者執行命令。\n" " \n" @@ -3380,10 +3256,8 @@ msgstr "" 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" +" 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" @@ -3399,13 +3273,11 @@ msgstr "" " 回傳成功除非工作管理沒有啟用或者錯誤發生。" #: builtins.c:787 -#, fuzzy 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" +" no arguments are given, information about remembered commands is displayed.\n" " \n" " Options:\n" " -d\tforget the remembered location of each NAME\n" @@ -3436,15 +3308,13 @@ msgstr "" " \t\tNAME 名稱,則每個位置前面會加上相應的 NAME 名稱\n" " \t\t\n" " 引數:\n" -" NAME\t\t每個 NAME 名稱會在 $PATH 路徑變數中被搜尋,並且新增到記住的命" -"令\n" +" NAME\t\t每個 NAME 名稱會在 $PATH 路徑變數中被搜尋,並且新增到記住的命令\n" " 列表中。\n" " \n" " 退出狀態:\n" " 回傳成功,除非 NAME 命令沒有找到或者使用了無效的選項。" #: builtins.c:812 -#, fuzzy msgid "" "Display information about builtin commands.\n" " \n" @@ -3459,11 +3329,10 @@ msgid "" " \t\tPATTERN\n" " \n" " Arguments:\n" -" PATTERN\tPattern specifying a help topic\n" +" PATTERN\tPattern specifiying a help topic\n" " \n" " Exit Status:\n" -" Returns success unless PATTERN is not found or an invalid option is " -"given." +" Returns success unless PATTERN is not found or an invalid option is given." msgstr "" "顯示內建命令的相關資訊。\n" " \n" @@ -3484,7 +3353,6 @@ msgstr "" " 回傳成功,除非 PATTERN 模式沒有找到或者使用了無效選項。" #: builtins.c:836 -#, fuzzy msgid "" "Display or manipulate the history list.\n" " \n" @@ -3493,8 +3361,7 @@ 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. Negative\n" -" \t\toffsets count back from the end of the history list\n" +" -d offset\tdelete the history entry at position 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" @@ -3512,8 +3379,7 @@ msgid "" " \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" +" 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." @@ -3529,7 +3395,7 @@ msgstr "" " \n" " -a\t將當前會話的歷史記錄列追加到歷史記錄檔案中\n" " -n\t從歷史記錄檔案中讀取所有未被讀取的列\n" -" -r\t讀取歷史記錄檔案並將內容追加到歷史記錄列表中\n" +"\t\t並且將它們追加到歷史列表 -r\t讀取歷史記錄檔案並將內容追加到歷史記錄列表中\n" " -w\t將當前歷史記錄寫入到歷史記錄檔案中,並追加到歷史記錄列表中\n" " \n" " -p\t對每一個 ARG 引數展開歷史記錄並顯示結果,而不儲存到歷史記錄列表中\n" @@ -3545,8 +3411,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者發生錯誤。" -#: builtins.c:873 -#, fuzzy +#: builtins.c:872 msgid "" "Display status of jobs.\n" " \n" @@ -3588,8 +3453,7 @@ msgstr "" " 回傳成功,除非使用了無效的選項或者有錯誤發生。\n" " 如果使用 -x 選項,則回傳 COMMAND 命令的退出狀態。" -#: builtins.c:900 -#, fuzzy +#: builtins.c:899 msgid "" "Remove jobs from current shell.\n" " \n" @@ -3619,8 +3483,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功除非使用了無效的選項或者 JOBSPEC 規格。" -#: builtins.c:919 -#, fuzzy +#: builtins.c:918 msgid "" "Send a signal to a job.\n" " \n" @@ -3660,15 +3523,14 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者有錯誤發生。" -#: builtins.c:943 +#: builtins.c:942 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" +" 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" @@ -3736,41 +3598,35 @@ msgstr "" " Shell 變數允許做為運算元。表示式中的變數名稱會以值取代\n" " (強制轉換為定寬的整數)。表示式中的變數不需要開啟整數屬性。\n" " \n" -" 運算子按照優先順序進行求值。括號中的子表示式將被先求值,並可取代上述表示" -"式規則。\n" +" 運算子按照優先順序進行求值。括號中的子表示式將被先求值,並可取代上述表示式規則。\n" " \n" " 退出狀態:\n" " 如果最後一個 ARG 引數求值為 0,則 let 回傳 1; 否則 let 回傳 0。" -#: builtins.c:988 -#, fuzzy +#: builtins.c:987 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" +" 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" +" 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" +" 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" +" -e\tuse Readline to obtain the line in an interactive shell\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" +" -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" @@ -3788,20 +3644,15 @@ msgid "" " -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" +" 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 "" "從標準輸入讀取一列並將其分為不同的區域。\n" " \n" -" 從標準輸入讀取單獨的一列,或者如果使用了 -u 選項,從檔案描述符 FD 中讀" -"取。\n" -" 該列被分割成區域,如同字詞分割一樣,並且第一個字詞被指派給第一個 NAME 變" -"數,第二\n" -" 個字詞被指派給第二個 NAME 變數,如此繼續,直到剩下所有的字詞被指派給最後" -"一個 NAME\n" +" 從標準輸入讀取單獨的一列,或者如果使用了 -u 選項,從檔案描述符 FD 中讀取。\n" +" 該列被分割成區域,如同字詞分割一樣,並且第一個字詞被指派給第一個 NAME 變數,第二\n" +" 個字詞被指派給第二個 NAME 變數,如此繼續,直到剩下所有的字詞被指派給最後一個 NAME\n" " 變數。只有 $IFS 變數中的字元被認做是字詞分隔符。\n" " \n" " 如果沒有提供 NAME 變數,則讀取的列被存放在 REPLY 變數中。\n" @@ -3813,15 +3664,13 @@ msgstr "" " -i text\t使用 TEXT 文字做為 Readline 的初始文字\n" " -n nchars\t讀取 nchars 個字元之後回傳,而不是等到讀取換列符。\n" " \t\t但是分隔符仍然有效,如果遇到分隔符之前讀取了不足 nchars 個字元。\n" -" -N nchars\t在準確讀取了 nchars 個字元之後回傳,除非遇到檔案結束符或者讀" -"取逾時,\n" +" -N nchars\t在準確讀取了 nchars 個字元之後回傳,除非遇到檔案結束符或者讀取逾時,\n" " \t\t任何的分隔符都被忽略\n" " -p prompt\t在嘗試讀取之前輸出 PROMPT 提示符並且不帶\n" " \t\t換列符\n" " -r\t不允許反斜線逸出任何字元\n" " -s\t不顯示終端的任何輸入\n" -" -t timeout\t如果在 TIMEOUT 秒內沒有讀取一個完整的列則逾時並且回傳失" -"敗。\n" +" -t timeout\t如果在 TIMEOUT 秒內沒有讀取一個完整的列則逾時並且回傳失敗。\n" " \t\tTMOUT 變數的值是預設逾時時間。\n" " \t\tTIMEOUT 可以是小數。如果 TIMEOUT 是 0,那麼僅當在指定的檔案描述符上\n" " \t\t輸入有效的時候,read 才回傳成功。\n" @@ -3832,7 +3681,7 @@ msgstr "" " 回傳碼為零,除非遇到了檔案結束符,讀取逾時,或者無效的文\n" " 件描述符做為引數傳遞給了 -u 選項。" -#: builtins.c:1035 +#: builtins.c:1034 msgid "" "Return from a shell function.\n" " \n" @@ -3852,8 +3701,7 @@ msgstr "" " 退出狀態:\n" " 回傳 N,或者如果 shell 不在執行一個函數或引用指令稿時,失敗。" -#: builtins.c:1048 -#, fuzzy +#: builtins.c:1047 msgid "" "Set or unset values of shell options and positional parameters.\n" " \n" @@ -3896,8 +3744,7 @@ msgid "" " 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" +" 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" @@ -3921,8 +3768,7 @@ msgid "" " 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" +" -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" @@ -4001,7 +3847,7 @@ msgstr "" " 時候這個標識位預設開啟。\n" " -P 設定之後類似 cd 的會變更當前目錄的命令不\n" " 追蹤符號鏈結。\n" -" -T 設定之後 DEBUG 陷阱會被 shell 函數繼承。\n" +" -T 設定之後 DEBUG 和 RETURN 陷阱會被 shell 函數繼承。\n" " - 任何剩餘的引數會被指派給位置引數。\n" " -x 和 -v 選項已關閉。\n" " \n" @@ -4014,8 +3860,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功除非使用了無效的引數。" -#: builtins.c:1133 -#, fuzzy +#: builtins.c:1132 msgid "" "Unset values and attributes of shell variables and functions.\n" " \n" @@ -4027,8 +3872,7 @@ msgid "" " -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" +" 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" @@ -4045,21 +3889,19 @@ msgstr "" " -v\t將每個 NAME 視為變數\n" " -n\t將每個 NAME 視為名稱引用,只取消其本身而非其指向的變數\n" " \n" -" 不帶選項時,unset 首先嘗試取消設定一個變數,如果失敗,再嘗試取消設定一個" -"函數。\n" +" 不帶選項時,unset 首先嘗試取消設定一個變數,如果失敗,再嘗試取消設定一個函數。\n" " \n" " 某些變數不可以被取消設定;參見「readonly」。\n" " \n" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱為唯讀。" -#: builtins.c:1155 +#: builtins.c:1154 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" +" executed commands. If VALUE is supplied, assign VALUE before exporting.\n" " \n" " Options:\n" " -f\trefer to shell functions\n" @@ -4086,8 +3928,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱。" -#: builtins.c:1174 -#, fuzzy +#: builtins.c:1173 msgid "" "Mark shell variables as unchangeable.\n" " \n" @@ -4123,7 +3964,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱。" -#: builtins.c:1196 +#: builtins.c:1195 msgid "" "Shift positional parameters.\n" " \n" @@ -4141,7 +3982,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非 N 為負或者大於 $#。" -#: builtins.c:1208 builtins.c:1223 +#: builtins.c:1207 builtins.c:1222 msgid "" "Execute commands from a file in the current shell.\n" " \n" @@ -4163,7 +4004,7 @@ msgstr "" " 退出狀態:\n" " 回傳 FILENAME 檔案中最後一個命令的狀態;如果 FILENAME 檔案不可讀則失敗。" -#: builtins.c:1239 +#: builtins.c:1238 msgid "" "Suspend shell execution.\n" " \n" @@ -4187,8 +4028,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非沒有啟用工作控制或者有錯誤發生。" -#: builtins.c:1255 -#, fuzzy +#: builtins.c:1254 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4222,8 +4062,7 @@ msgid "" " -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 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" @@ -4244,8 +4083,7 @@ msgid "" " STRING1 != STRING2\n" " True if the strings are not equal.\n" " STRING1 < STRING2\n" -" True if STRING1 sorts before STRING2 " -"lexicographically.\n" +" True if STRING1 sorts before STRING2 lexicographically.\n" " STRING1 > STRING2\n" " True if STRING1 sorts after STRING2 lexicographically.\n" " \n" @@ -4342,7 +4180,7 @@ msgstr "" " 如果 EXPR 表示式求值為真則回傳成功;如果 EXPR 表示式求值\n" " 為假或者使用了無效的引數則回傳失敗。" -#: builtins.c:1337 +#: builtins.c:1336 msgid "" "Evaluate conditional expression.\n" " \n" @@ -4354,12 +4192,11 @@ msgstr "" " 是內建命令「test」的同義詞,但是最後一個引數必須是\n" " 字元「]」,以匹配起始的「[」。" -#: builtins.c:1346 +#: builtins.c:1345 msgid "" "Display process times.\n" " \n" -" Prints the accumulated user and system times for the shell and all of " -"its\n" +" Prints the accumulated user and system times for the shell and all of its\n" " child processes.\n" " \n" " Exit Status:\n" @@ -4373,12 +4210,11 @@ msgstr "" " 退出狀態:\n" " 一律成功。" -#: builtins.c:1358 +#: builtins.c:1357 msgid "" "Trap signals and other events.\n" " \n" -" Defines and activates handlers to be run when the shell receives " -"signals\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" @@ -4387,34 +4223,26 @@ msgid "" " 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" +" 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" +" 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 or a signal " -"number.\n" +" Each SIGNAL_SPEC is either a signal name in 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." +" Returns success unless a SIGSPEC is invalid or an invalid option is given." msgstr "" "對訊號和其他事件設陷阱。\n" " \n" @@ -4423,8 +4251,7 @@ msgstr "" " ARG 引數是當 shell 接收到 SIGNAL_SPEC 訊號時讀取和執行的命令。\n" " 如果沒有指定 ARG 引數 (並且只給出一個 SIGNAL_SPEC 訊號) 或者\n" " ARG 引數為\n" -" 「-」,每一個指定的引數會被重置為原始值。如果 ARG 引數是一個空串,則每一" -"個\n" +" 「-」,每一個指定的引數會被重置為原始值。如果 ARG 引數是一個空串,則每一個\n" " SIGNAL_SPEC 訊號會被 shell 和它啟動的命令忽略。\n" " \n" " 如果一個 SIGNAL_SPEC 訊號是 EXIT (0) ,則 ARG 命令會在 shell 退出時被\n" @@ -4444,8 +4271,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 SIGSPEC。" -#: builtins.c:1394 -#, fuzzy +#: builtins.c:1393 msgid "" "Display information about command type.\n" " \n" @@ -4471,8 +4297,7 @@ msgid "" " 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." +" Returns success if all of the NAMEs are found; fails if any are not found." msgstr "" "顯示命令類型的資訊。\n" " \n" @@ -4497,13 +4322,11 @@ msgstr "" " 退出狀態:\n" " 如果所有的 NAME 命令都找到則回傳成功;任何找不到則失敗。" -#: builtins.c:1425 -#, fuzzy +#: builtins.c:1424 msgid "" "Modify shell resource limits.\n" " \n" -" Provides control over the resources available to the shell and " -"processes\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" @@ -4561,6 +4384,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" @@ -4568,6 +4392,7 @@ msgstr "" " -q\tPOSIX 資訊佇列的最大位元組數\n" " -r\t實時排程的最大優先順序\n" " -s\t最大堆疊尺寸\n" +" -P\t偽終端的最大數量\n" " -t\t最大的 CPU 時間,以秒為單位\n" " -u\t最大使用者行程數\n" " -v\t虛擬記憶體尺寸\n" @@ -4577,8 +4402,7 @@ msgstr "" " 並非所有選項在所有系統上可用。\n" " \n" " 如果提供了 LIMIT 變數,則它為指定資源的新值;特別的 LIMIT 值為\n" -" 「soft」、「hard」和「unlimited」,分別表示當前的軟限制,硬限制和無限" -"制。\n" +" 「soft」、「hard」和「unlimited」,分別表示當前的軟限制,硬限制和無限制。\n" " 否則印出指定資源的當前限制值,不帶選項則假定為 -f\n" " \n" " 取值都是 1024 位元組為單位,除了 -t 以秒為單位,-p 以 512 位元組遞增,\n" @@ -4587,7 +4411,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者錯誤發生。" -#: builtins.c:1475 +#: builtins.c:1474 msgid "" "Display or set file mode mask.\n" " \n" @@ -4619,24 +4443,19 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的 MODE 模式或者選項。" -#: builtins.c:1495 -#, fuzzy +#: builtins.c:1494 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" +" 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" +" status is zero. If ID is a 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." @@ -4653,18 +4472,16 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個 ID 行程的狀態;如果使用了無效的 ID 或者選項則失敗。" -#: builtins.c:1519 +#: builtins.c:1515 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" +" 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" +" Returns the status of the last PID; fails if PID is invalid or an invalid\n" " option is given." msgstr "" "等待行程完成並且回傳退出狀態。\n" @@ -4673,10 +4490,9 @@ msgstr "" " 子行程都會被等待,並且回傳碼為零。PID 必須為行程識別號。\n" " \n" " 退出狀態:\n" -" 回傳行程 ID 的狀態;如果 PID 是無效的行程識別號或者指定了無效的選項則失" -"敗。" +" 回傳行程 ID 的狀態;如果 PID 是無效的行程識別號或者指定了無效的選項則失敗。" -#: builtins.c:1534 +#: builtins.c:1530 msgid "" "Execute commands for each member in a list.\n" " \n" @@ -4697,7 +4513,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後執行命令的狀態。" -#: builtins.c:1548 +#: builtins.c:1544 msgid "" "Arithmetic for loop.\n" " \n" @@ -4727,7 +4543,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後執行命令的狀態。" -#: builtins.c:1566 +#: builtins.c:1562 msgid "" "Select words from a list and execute commands.\n" " \n" @@ -4760,7 +4576,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1587 +#: builtins.c:1583 msgid "" "Report time consumed by pipeline's execution.\n" " \n" @@ -4788,7 +4604,7 @@ msgstr "" " 退出狀態:\n" " 回傳狀態即 PIPELINE 的回傳狀態。" -#: builtins.c:1604 +#: builtins.c:1600 msgid "" "Execute commands based on pattern matching.\n" " \n" @@ -4806,21 +4622,16 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1616 +#: builtins.c:1612 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" +" 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" +" `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" @@ -4837,7 +4648,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1633 +#: builtins.c:1629 msgid "" "Execute commands as long as a test succeeds.\n" " \n" @@ -4855,7 +4666,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1645 +#: builtins.c:1641 msgid "" "Execute commands as long as a test does not succeed.\n" " \n" @@ -4873,8 +4684,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1657 -#, fuzzy +#: builtins.c:1653 msgid "" "Create a coprocess named NAME.\n" " \n" @@ -4894,15 +4704,14 @@ msgstr "" " 預設的 NAME 是「COPROC」。\n" " \n" " 退出狀態:\n" -" 回傳 COMMAND 命令的退出狀態。" +" coprc 指令回傳離開代碼 0。" -#: builtins.c:1671 +#: builtins.c:1667 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" +" 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" @@ -4919,7 +4728,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功除非 NAME 為唯讀。" -#: builtins.c:1685 +#: builtins.c:1681 msgid "" "Group commands as a unit.\n" " \n" @@ -4937,7 +4746,7 @@ msgstr "" " 退出狀態:\n" " 回傳最後一個執行命令的狀態。" -#: builtins.c:1697 +#: builtins.c:1693 msgid "" "Resume job in foreground.\n" " \n" @@ -4961,7 +4770,7 @@ msgstr "" " 退出狀態:\n" " 回傳被繼續的工作狀態。" -#: builtins.c:1712 +#: builtins.c:1708 msgid "" "Evaluate arithmetic expression.\n" " \n" @@ -4979,16 +4788,13 @@ msgstr "" " 退出狀態:\n" " 如果表示式求值為 0 則回傳 1;否則回傳 0。" -#: builtins.c:1724 +#: builtins.c:1720 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" +" 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" @@ -5014,8 +4820,7 @@ msgstr "" " ( EXPRESSION )\t回傳 EXPRESSION 表示式的值\n" " ! EXPRESSION\t\t如果 EXPRESSION 表示式為假則為真,否則為假\n" " EXPR1 && EXPR2\t如果 EXPR1 和 EXPR2 表示式均為真則為真,否則為假\n" -" EXPR1 || EXPR2\t如果 EXPR1 和 EXPR2 表示式中有一個為真則為真,否則為" -"假\n" +" EXPR1 || EXPR2\t如果 EXPR1 和 EXPR2 表示式中有一個為真則為真,否則為假\n" " \n" " 當使用「==」和「!=」運算子時,運算子右邊的字串被用作模式並且執行一個\n" " 匹配。當使用「=~」運算子時,運算子右邊的字串被當做正則表示式來進行\n" @@ -5027,7 +4832,7 @@ msgstr "" " 退出狀態:\n" " 根據 EXPRESSION 的值為 0 或 1。" -#: builtins.c:1750 +#: builtins.c:1746 msgid "" "Common shell variable names and usage.\n" " \n" @@ -5122,8 +4927,7 @@ msgstr "" " HISTIGNORE\t用於決定哪些命令被存入歷史記錄檔案的模式\n" " \t\t列表,以冒號分隔。\n" -#: builtins.c:1807 -#, fuzzy +#: builtins.c:1803 msgid "" "Add directories to stack.\n" " \n" @@ -5153,9 +4957,9 @@ msgid "" " Returns success unless an invalid argument is supplied or the directory\n" " change fails." msgstr "" -"從堆疊中刪除目錄。\n" +"從堆疊中建立目錄。\n" " \n" -" 從目錄堆疊中刪除條目。不帶引數時,刪除堆疊頂端目錄,並變更至新的堆疊\n" +" 從目錄堆疊中建立條目。不帶引數時,建立堆疊頂端目錄,並變更至新的堆疊\n" " 頂端目錄。\n" " \n" " 選項:\n" @@ -5174,8 +4978,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的引數或者目錄變換失敗。" -#: builtins.c:1841 -#, fuzzy +#: builtins.c:1837 msgid "" "Remove directories from stack.\n" " \n" @@ -5222,8 +5025,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的引數或者目錄變換失敗。" -#: builtins.c:1871 -#, fuzzy +#: builtins.c:1867 msgid "" "Display directory stack.\n" " \n" @@ -5272,14 +5074,13 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者發生錯誤。" -#: builtins.c:1902 -#, fuzzy +#: builtins.c:1898 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" +" arguments, list all shell options with an indication of whether or not each\n" +" is set.\n" " \n" " Options:\n" " -o\trestrict OPTNAMEs to those defined for use with `set -o'\n" @@ -5309,8 +5110,7 @@ msgstr "" " 如果 OPTNAME 選項被啟用則回傳成功;如果是\n" " 無效的選項或 OPTNAME 被停用則失敗。" -#: builtins.c:1923 -#, fuzzy +#: builtins.c:1919 msgid "" "Formats and prints ARGUMENTS under control of the FORMAT.\n" " \n" @@ -5318,34 +5118,27 @@ msgid "" " -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" +" 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" +" 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" +" 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" +" %(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" +" 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" +" Returns success unless an invalid option is given or a write or assignment\n" " error occurs." msgstr "" "在 FORMAT 的控制下格式化並印出 ARGUMENTS 引數。\n" @@ -5354,26 +5147,22 @@ msgstr "" " -v var\t將輸出指派給 shell 變數 VAR 而不顯示在標準輸出上\n" " \n" " FORMAT 是包含三種物件的字串:簡單地被複製到標準輸出的普通字元;\n" -" 被變換之後複製到標準輸入的逸出字元;以及每個都會影響到下個引數的印出格式" -"化規格。\n" +" 被變換之後複製到標準輸入的逸出字元;以及每個都會影響到下個引數的印出格式化規格。\n" " \n" " 在 printf(1) 中描述的標準控制規格之外,printf 解析:\n" "、 \n" " %b\t擴充套件對應引數中的反斜線逸出序列\n" " %q\t以可做為 shell 輸入的格式引用引數\n" -" \n" +" %(fmt)T\t以 FMT 為提供 strftime(3) 的格式輸出日期與時間字串 \n" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者發生寫入或指派錯誤。" -#: builtins.c:1957 -#, fuzzy +#: builtins.c:1953 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" +" 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" @@ -5410,13 +5199,12 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者錯誤發生。" -#: builtins.c:1985 +#: builtins.c:1981 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" +" completions. If the optional WORD argument is supplied, matches against\n" " WORD are generated.\n" " \n" " Exit Status:\n" @@ -5431,16 +5219,13 @@ msgstr "" " 退出狀態:\n" " 除非使用了無效選項或者錯誤發生,否則回傳成功。" -#: builtins.c:2000 +#: builtins.c:1996 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" +" 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" @@ -5463,8 +5248,7 @@ msgid "" msgstr "" "修改或顯示補完選項。\n" " \n" -" 修改每個 NAME 名稱的補完選項,或如果沒有提供 NAME 名稱,執行當前的補" -"完。\n" +" 修改每個 NAME 名稱的補完選項,或如果沒有提供 NAME 名稱,執行當前的補完。\n" " 如果不帶選項,印出每個 NAME 名稱的補完選項或當前的補完規格。\n" " \n" " 選項:\n" @@ -5483,27 +5267,21 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項或者 NAME 名稱沒有定義補完規格。" -#: builtins.c:2030 -#, fuzzy +#: builtins.c:2026 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" +" 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" +" -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" +" -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" @@ -5516,13 +5294,11 @@ msgid "" " 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" +" 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" +" Returns success unless an invalid option is given or ARRAY is readonly or\n" " not an indexed array." msgstr "" "從標準輸入讀取列到索引陣列變數中。\n" @@ -5531,6 +5307,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" @@ -5550,7 +5327,7 @@ msgstr "" " 退出狀態:\n" " 回傳成功,除非使用了無效的選項,或者 ARRAY 變數唯讀或不是索引陣列。" -#: builtins.c:2066 +#: builtins.c:2062 msgid "" "Read lines from a file into an array variable.\n" " \n" diff --git a/shell.c b/shell.c index ad76636cd..a9659bb8d 100644 --- a/shell.c +++ b/shell.c @@ -363,7 +363,7 @@ main (argc, argv, env) #endif /* !NO_MAIN_ENV_ARG */ { register int i; - int code, old_errexit_flag; + int code, old_errexit_flag, old_onecmd; #if defined (RESTRICTED_SHELL) int saverst; #endif @@ -1012,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 diff --git a/sig.c b/sig.c index 6934f4f94..8daec14b6 100644 --- a/sig.c +++ b/sig.c @@ -268,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++) diff --git a/subst.c b/subst.c index 6d1000986..906b7ac56 100644 --- a/subst.c +++ b/subst.c @@ -387,10 +387,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) { @@ -1178,7 +1178,10 @@ string_extract_verbatim (string, slen, sindex, charlist, flags) } #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; @@ -3059,6 +3062,7 @@ do_compound_assignment (name, value, flags) SHELL_VAR *v; int mklocal, mkassoc, mkglobal, chklocal; WORD_LIST *list; + char *newname; /* used for local nameref references */ mklocal = flags & ASS_MKLOCAL; mkassoc = flags & ASS_MKASSOC; @@ -3067,7 +3071,8 @@ do_compound_assignment (name, value, flags) 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 (readonly_p (v)) @@ -3076,9 +3081,9 @@ do_compound_assignment (name, value, flags) } 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) @@ -3099,13 +3104,15 @@ do_compound_assignment (name, value, flags) 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) @@ -3896,15 +3903,17 @@ expand_string_for_pat (string, 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); } @@ -6006,10 +6015,7 @@ read_comsub (fd, quoted, flags, rflag) 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; @@ -6840,8 +6846,14 @@ parameter_brace_expand_rhs (name, value, op, quoted, pflags, qdollaratp, hasdoll 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, quoted, 0) : 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 @@ -7310,9 +7322,9 @@ get_var_and_type (varname, value, ind, quoted, flags, varp, valp) vtype = VT_VARIABLE; *varp = v; if (quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) - *valp = dequote_string (value); + *valp = value ? dequote_string (value) : savestring (""); else - *valp = dequote_escapes (value); + *valp = value ? dequote_escapes (value) : (char *)NULL; } else { @@ -7696,7 +7708,7 @@ parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags) int quoted, pflags, flags; { intmax_t e1, e2; - int vtype, r, starsub, qflags; + int vtype, r, starsub; char *temp, *val, *tt, *oname; SHELL_VAR *v; @@ -7745,9 +7757,23 @@ parameter_brace_substring (varname, value, ind, substr, quoted, pflags, flags) FREE (tt); break; case VT_POSPARMS: - qflags = quoted; - tt = pos_params (varname, e1, e2, qflags); - /* string_list_dollar_at will quote the list if ifs_is_null != 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) @@ -7762,21 +7788,7 @@ parameter_brace_substring (varname, value, ind, substr, quoted, pflags, 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; } @@ -7817,7 +7829,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; @@ -7968,7 +7980,7 @@ pos_params_pat_subst (string, pat, rep, mflags) 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. */ + 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 */ @@ -8135,11 +8147,22 @@ parameter_brace_patsub (varname, value, ind, patsub, quoted, pflags, flags) if ((mflags & MATCH_STARSUB) && (mflags & MATCH_ASSIGNRHS) && ifs_is_null) mflags |= MATCH_QUOTED; /* Posix interp 888 */ - 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. */ + /* 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 } @@ -8286,7 +8309,7 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, pflags, { /* Posix interp 888 */ } - else if (temp && (mflags & MATCH_QUOTED) == 0) + else if (temp && (mflags & MATCH_QUOTED) == 0) { tt = quote_escapes (temp); free (temp); @@ -8304,9 +8327,18 @@ parameter_brace_casemod (varname, value, ind, modspec, patspec, quoted, pflags, 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 } @@ -9870,6 +9902,8 @@ add_string: if (tword && (tword->flags & W_HASQUOTEDNULL)) 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); @@ -10146,6 +10180,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, @@ -10416,6 +10453,8 @@ finished_with_string: 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() */ @@ -10596,9 +10635,14 @@ setifs (v) } 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]; @@ -10649,10 +10693,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 diff --git a/support/Makefile.in b/support/Makefile.in index f684a4d6d..0289e0acf 100644 --- a/support/Makefile.in +++ b/support/Makefile.in @@ -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 @@ -82,6 +83,6 @@ clean: $(RM) man2html$(EXEEXT) $(OBJ1) distclean maintainer-clean mostlyclean: clean - $(RM) bash.pc + $(RM) bash.pc bashbug.sh man2html.o: man2html.c diff --git a/support/config.guess b/support/config.guess old mode 100644 new mode 100755 index 770cb5c7e..883a6713b --- a/support/config.guess +++ b/support/config.guess @@ -1,8 +1,8 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright 1992-2017 Free Software Foundation, Inc. +# Copyright 1992-2018 Free Software Foundation, Inc. -timestamp='2017-12-17' +timestamp='2018-05-19' # 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 @@ -50,7 +50,7 @@ version="\ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright 1992-2017 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." @@ -106,10 +106,10 @@ trap "rm -f \$tmpfiles 2>/dev/null; rmdir \$tmp 2>/dev/null; exit 1" 1 2 13 15 ; { 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 ; +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 + if ($c -c -o "$dummy.o" "$dummy.c") >/dev/null 2>&1 ; then CC_FOR_BUILD="$c"; break ; fi ; done ; @@ -132,14 +132,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 + eval "$set_cc_for_build" + cat <<-EOF > "$dummy.c" #include #if defined(__UCLIBC__) LIBC=uclibc @@ -149,13 +149,20 @@ Linux|GNU|GNU/*) LIBC=gnu #endif EOF - eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, ,,g'` + 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*, @@ -169,30 +176,30 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # portion of the name. We always set it to "unknown". sysctl="sysctl -n hw.machine_arch" UNAME_MACHINE_ARCH=`(uname -p 2>/dev/null || \ - /sbin/$sysctl 2>/dev/null || \ - /usr/sbin/$sysctl 2>/dev/null || \ + "/sbin/$sysctl" 2>/dev/null || \ + "/usr/sbin/$sysctl" 2>/dev/null || \ echo unknown)` - case "${UNAME_MACHINE_ARCH}" in + 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 ;; 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 + 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 ;; + *) machine="$UNAME_MACHINE_ARCH"-unknown ;; esac # The Operating System including object format, if it has switched # to ELF recently (or will in the future) and ABI. - case "${UNAME_MACHINE_ARCH}" in + case "$UNAME_MACHINE_ARCH" in earm*) os=netbsdelf ;; arm*|i386|m68k|ns32k|sh3*|sparc|vax) - eval $set_cc_for_build + eval "$set_cc_for_build" if echo __ELF__ | $CC_FOR_BUILD -E - 2>/dev/null \ | grep -q __ELF__ then @@ -208,10 +215,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in ;; esac # Determine ABI tags. - case "${UNAME_MACHINE_ARCH}" in + case "$UNAME_MACHINE_ARCH" in earm*) expr='s/^earmv[0-9]/-eabi/;s/eb$//' - abi=`echo ${UNAME_MACHINE_ARCH} | sed -e "$expr"` + abi=`echo "$UNAME_MACHINE_ARCH" | sed -e "$expr"` ;; esac # The OS release @@ -219,51 +226,51 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # 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/[-_].*//' | cut -d. -f1,2` + 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}${abi}" + 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} + echo "$UNAME_MACHINE_ARCH"-unknown-libertybsd"$UNAME_RELEASE" exit ;; *:MidnightBSD:*:*) - echo ${UNAME_MACHINE}-unknown-midnightbsd${UNAME_RELEASE} + 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 + echo "$UNAME_MACHINE"-unknown-sortix exit ;; *:Redox:*:*) - echo ${UNAME_MACHINE}-unknown-redox + echo "$UNAME_MACHINE"-unknown-redox exit ;; mips:OSF1:*.*) echo mips-dec-osf1 @@ -319,7 +326,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in # 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 @@ -328,10 +335,10 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in 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 @@ -343,7 +350,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 @@ -370,19 +377,19 @@ 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 + 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. @@ -395,13 +402,13 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in SUN_ARCH=x86_64 fi fi - echo ${SUN_ARCH}-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'` + echo "$SUN_ARCH"-pc-solaris2"`echo "$UNAME_RELEASE"|sed -e 's/[^.]*//'`" 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 @@ -410,25 +417,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 @@ -439,44 +446,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 + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" #ifdef __cplusplus #include /* for printf() prototype */ int main (int argc, char *argv[]) { @@ -497,11 +504,11 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in 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 @@ -527,17 +534,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) @@ -554,7 +561,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 @@ -566,14 +573,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 + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" #include main() @@ -584,7 +591,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 @@ -598,7 +605,7 @@ 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 @@ -607,9 +614,9 @@ EOF 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 @@ -618,7 +625,7 @@ EOF 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 @@ -633,28 +640,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 + 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 + 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 + 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 + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" #define _HPUX_SOURCE #include @@ -687,13 +694,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 + eval "$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 @@ -712,15 +719,15 @@ EOF 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 + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" #include int main () @@ -745,7 +752,7 @@ 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 ;; @@ -766,9 +773,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*:*:*) @@ -793,109 +800,109 @@ 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_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_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 ;; *:FreeBSD:*:*) UNAME_PROCESSOR=`/usr/bin/uname -p` - case ${UNAME_PROCESSOR} in + case "$UNAME_PROCESSOR" in amd64) UNAME_PROCESSOR=x86_64 ;; i386) UNAME_PROCESSOR=i586 ;; esac - echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` + 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 ;; *:MSYS*:*) - echo ${UNAME_MACHINE}-pc-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 ;; i*:UWIN*:*) - echo ${UNAME_MACHINE}-pc-uwin + echo "$UNAME_MACHINE"-pc-uwin exit ;; amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*) echo x86_64-unknown-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 "[:upper:]" "[:lower:]"``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 + echo "$UNAME_MACHINE"-pc-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 @@ -909,63 +916,63 @@ EOF esac objdump --private-headers /bin/sh | grep -q ld.so.1 if test "$?" = 0 ; then LIBC=gnulibc1 ; fi - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + 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 + eval "$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} + 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} + 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 + eval "$set_cc_for_build" + sed 's/^ //' << EOF > "$dummy.c" #undef CPU #undef ${UNAME_MACHINE} #undef ${UNAME_MACHINE}el @@ -979,70 +986,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; } ;; mips64el:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + echo "$UNAME_MACHINE"-unknown-linux-"$LIBC" exit ;; openrisc*:Linux:*:*) - echo or1k-unknown-linux-${LIBC} + echo or1k-unknown-linux-"$LIBC" exit ;; or32:Linux:*:* | or1k*:Linux:*:*) - echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + 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} + 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}-pc-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. @@ -1056,34 +1063,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.*:*) - UNAME_REL=`echo ${UNAME_RELEASE} | sed 's/\/MP$//'` + 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]*) @@ -1093,12 +1100,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' /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 @@ -1108,9 +1115,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:*:*:*) @@ -1130,9 +1137,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:*) @@ -1152,9 +1159,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; } ;; @@ -1163,28 +1170,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 @@ -1195,7 +1202,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 @@ -1215,23 +1222,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. @@ -1250,39 +1257,39 @@ 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} + 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 + eval "$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 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) | \ @@ -1310,7 +1317,7 @@ 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` @@ -1318,22 +1325,25 @@ EOF 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} + 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} + echo nsr-tandem-nsk"$UNAME_RELEASE" + exit ;; + NSV-*:NONSTOP_KERNEL:*:*) + echo nsv-tandem-nsk"$UNAME_RELEASE" exit ;; NSX-*:NONSTOP_KERNEL:*:*) - echo nsx-tandem-nsk${UNAME_RELEASE} + echo nsx-tandem-nsk"$UNAME_RELEASE" exit ;; *:NonStop-UX:*:*) echo mips-compaq-nonstopux @@ -1342,7 +1352,7 @@ 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 @@ -1353,7 +1363,7 @@ EOF else UNAME_MACHINE="$cputype" fi - echo ${UNAME_MACHINE}-unknown-plan9 + echo "$UNAME_MACHINE"-unknown-plan9 exit ;; *:TOPS-10:*:*) echo pdp10-unknown-tops10 @@ -1374,14 +1384,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 ;; @@ -1390,16 +1400,16 @@ 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 @@ -1408,7 +1418,7 @@ esac echo "$0: unable to guess system type" >&2 -case "${UNAME_MACHINE}:${UNAME_SYSTEM}" in +case "$UNAME_MACHINE:$UNAME_SYSTEM" in mips:Linux | mips64:Linux) # If we got here on MIPS GNU/Linux, output extra information. cat >&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-functions 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/support/config.rpath b/support/config.rpath index b6c4d8ffc..fc5913d78 100755 --- a/support/config.rpath +++ b/support/config.rpath @@ -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 , 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 . -# -# 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 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=/' <." version="\ GNU config.sub ($timestamp) -Copyright 1992-2017 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." @@ -94,7 +94,7 @@ while test $# -gt 0 ; do *local*) # First pass through any local machine types. - echo $1 + echo "$1" exit ;; * ) @@ -110,28 +110,434 @@ 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* | netbsd*-eabi* | \ - kopensolaris*-gnu* | cloudabi*-eabi* | \ - 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 - ;; +# Split fields of configuration type +IFS="-" read -r field1 field2 field3 field4 <&2 + exit 1 + ;; + *-*-*-*) + basic_machine=$field1-$field2 + os=$field3-$field4 + ;; + *-*-*) + # 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 + ;; + *-*) + basic_machine=$field1 + os=$field2 + ;; + *) + # 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 + ;; + am29k) + basic_machine=a29k-none + os=bsd + ;; + amdahl) + basic_machine=580-amdahl + os=sysv + ;; + 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 + ;; + cray) + basic_machine=j90-cray + os=unicos + ;; + craynv) + basic_machine=craynv-cray + os=unicosmp + ;; + 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 + ;; + 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-unknown + 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-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 + ;; + 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 + ;; + sps7) + basic_machine=m68k-bull + os=sysv2 + ;; + stratus) + basic_machine=i860-stratus + os=sysv4 + ;; + sun2os3) + basic_machine=m68000-sun + os=sunos3 + ;; + sun2os4) + basic_machine=m68000-sun + os=sunos4 + ;; + sun3os3) + basic_machine=m68k-sun + os=sunos3 + ;; + sun3os4) + basic_machine=m68k-sun + os=sunos4 + ;; + sun4os3) + basic_machine=sparc-sun + os=sunos3 + ;; + sun4os4) + basic_machine=sparc-sun + os=sunos4 + ;; + sun4sol2) + basic_machine=sparc-sun + os=solaris2 + ;; + 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 ### Let's recognize common machines as not being operating systems so @@ -139,102 +545,102 @@ esac ### recognize some manufacturers as not being operating systems, so we ### can provide default operating systems below. case $os in - -sun*os*) + 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*) + 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 + bluegene*) + os=cnk ;; - -sim | -cisco | -oki | -wec | -winbond) + sim | cisco | oki | wec | winbond) os= basic_machine=$1 ;; - -scout) + scout) ;; - -wrs) - os=-vxworks + wrs) + os=vxworks basic_machine=$1 ;; - -chorusos*) - os=-chorusos + chorusos*) + os=chorusos basic_machine=$1 ;; - -chorusrdb) - os=-chorusrdb + chorusrdb) + os=chorusrdb basic_machine=$1 ;; - -hiux*) - os=-hiuxwe2 + hiux*) + os=hiuxwe2 ;; - -sco6) - os=-sco5v6 - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + 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/'` + 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/'` + sco4) + os=sco3.2v4 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; - -sco3.2.[4-9]*) + sco3.2.[4-9]*) os=`echo $os | sed -e 's/sco3.2./sco3.2v/'` - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; - -sco3.2v[4-9]*) + 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/'` + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; - -sco5v6*) + sco5v6*) # Don't forget version if it is 3.2v4 or newer. - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; - -sco*) - os=-sco3.2v2 - 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/'` + 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/'` + isc) + os=isc2.2 + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; - -clix*) + clix*) basic_machine=clipper-intergraph ;; - -isc*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` + isc*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-pc/'` ;; - -lynx*178) - os=-lynxos178 + lynx*178) + os=lynxos178 ;; - -lynx*5) - os=-lynxos5 + lynx*5) + os=lynxos5 ;; - -lynx*) - os=-lynxos + lynx*) + os=lynxos ;; - -ptx*) - basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'` + ptx*) + basic_machine=`echo "$1" | sed -e 's/86-.*/86-sequent/'` ;; - -psos*) - os=-psos + psos*) + os=psos ;; - -mint | -mint[0-9]*) + mint | mint[0-9]*) basic_machine=m68k-atari - os=-mint + os=mint ;; esac @@ -249,12 +655,12 @@ case $basic_machine in | 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] \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv6m | armv[78][arm] \ | avr | avr32 \ | ba \ | be32 | be64 \ | bfin \ - | c4x | c8051 | clipper \ + | c4x | c8051 | clipper | csky \ | d10v | d30v | dlx | dsp16xx \ | e2k | epiphany \ | fido | fr30 | frv | ft32 \ @@ -293,10 +699,11 @@ case $basic_machine in | mt \ | msp430 \ | nds32 | nds32le | nds32be \ + | nfp \ | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ | open8 | or1k | or1knd | or32 \ - | pdp10 | pdp11 | pj | pjl \ + | pdp10 | pj | pjl \ | powerpc | powerpc64 | powerpc64le | powerpcle \ | pru \ | pyramid \ @@ -331,20 +738,23 @@ case $basic_machine in ;; m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip) basic_machine=$basic_machine-unknown - os=-none + os=${os:-none} + ;; + m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65) ;; - m88110 | m680[12346]0 | m683?2 | m68360 | m5200 | v70 | w65 | z8k) + m9s12z | m68hcs12z | hcs12z | s12z) + basic_machine=s12z-unknown + os=${os:-none} ;; ms1) basic_machine=mt-unknown ;; - strongarm | thumb | xscale) basic_machine=arm-unknown ;; xgate) basic_machine=$basic_machine-unknown - os=-none + os=${os:-none} ;; xscaleeb) basic_machine=armeb-unknown @@ -360,11 +770,6 @@ case $basic_machine in 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 - ;; # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ @@ -378,7 +783,7 @@ case $basic_machine in | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ - | c8051-* | clipper-* | craynv-* | cydra-* \ + | c8051-* | clipper-* | craynv-* | csky-* | cydra-* \ | d10v-* | d30v-* | dlx-* \ | e2k-* | elxsi-* \ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ @@ -419,6 +824,7 @@ case $basic_machine in | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ + | nfp-* \ | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ | open8-* \ @@ -456,141 +862,77 @@ case $basic_machine in ;; # 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 ;; 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 + basic_machine=x86_64-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; 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 - ;; asmjs) basic_machine=asmjs-unknown ;; - 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 + basic_machine=bfin-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=linux ;; bluegene*) basic_machine=powerpc-ibm - os=-cnk + os=cnk ;; c54x-*) - basic_machine=tic54x-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=tic54x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c55x-*) - basic_machine=tic55x-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=tic55x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c6x-*) - basic_machine=tic6x-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=tic6x-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; c90) basic_machine=c90-cray - os=-unicos - ;; - cegcc) - basic_machine=arm-unknown - os=-cegcc + os=${os:-unicos} ;; convex-c1) basic_machine=c1-convex - os=-bsd + os=bsd ;; convex-c2) basic_machine=c2-convex - os=-bsd + os=bsd ;; convex-c32) basic_machine=c32-convex - os=-bsd + os=bsd ;; convex-c34) basic_machine=c34-convex - os=-bsd + 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 + os=bsd ;; cr16 | cr16-*) basic_machine=cr16-unknown - os=-elf + os=${os:-elf} ;; crds | unos) basic_machine=m68k-crds @@ -603,7 +945,7 @@ case $basic_machine in ;; crx) basic_machine=crx-unknown - os=-elf + os=${os:-elf} ;; da30 | da30-*) basic_machine=m68k-da30 @@ -613,58 +955,38 @@ case $basic_machine in ;; decsystem10* | dec10*) basic_machine=pdp10-dec - os=-tops10 + os=tops10 ;; decsystem20* | dec20*) basic_machine=pdp10-dec - os=-tops20 + 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 - ;; - djgpp) - basic_machine=i586-pc - os=-msdosdjgpp - ;; dpx20 | dpx20-*) basic_machine=rs6000-bull - os=-bosx + os=${os:-bosx} ;; dpx2*) basic_machine=m68k-bull - os=-sysv3 + os=sysv3 ;; e500v[12]) basic_machine=powerpc-unknown os=$os"spe" ;; e500v[12]-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` os=$os"spe" ;; - ebmon29k) - basic_machine=a29k-amd - os=-ebmon - ;; - elxsi) - basic_machine=elxsi-elxsi - os=-bsd - ;; encore | umax | mmax) basic_machine=ns32k-encore ;; - es1800 | OSE68k | ose68k | ose | OSE) - basic_machine=m68k-ericsson - os=-ose + elxsi) + basic_machine=elxsi-elxsi + os=${os:-bsd} ;; fx2800) basic_machine=i860-alliant @@ -672,45 +994,13 @@ case $basic_machine in genix) basic_machine=ns32k-ns ;; - gmicro) - basic_machine=tron-gmicro - os=-sysv - ;; - go32) - basic_machine=i386-pc - os=-go32 - ;; 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 + os=hiuxwe2 ;; hp300-*) basic_machine=m68k-hp ;; - hp300bsd) - basic_machine=m68k-hp - os=-bsd - ;; - hp300hpux) - basic_machine=m68k-hp - os=-hpux - ;; hp3k9[0-9][0-9] | hp9[0-9][0-9]) basic_machine=hppa1.0-hp ;; @@ -740,200 +1030,82 @@ case $basic_machine in 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 ;; i*86v32) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv32 + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=sysv32 ;; i*86v4*) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv4 + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=sysv4 ;; i*86v) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-sysv + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=sysv ;; i*86sol2) - basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` - os=-solaris2 + basic_machine=`echo "$1" | sed -e 's/86.*/86-pc/'` + os=solaris2 ;; - i386mach) - basic_machine=i386-mach - os=-mach - ;; - i386-vsta | vsta) - basic_machine=i386-unknown - os=-vsta + j90 | j90-cray) + basic_machine=j90-cray + os=${os:-unicos} ;; iris | iris4d) basic_machine=mips-sgi case $os in - -irix*) + irix*) ;; *) - os=-irix4 + os=irix4 ;; esac ;; - isi68 | isi) - basic_machine=m68k-isi - os=-sysv - ;; leon-*|leon[3-9]-*) - basic_machine=sparc-`echo $basic_machine | sed 's/-.*//'` - ;; - m68knommu) - basic_machine=m68k-unknown - os=-linux + basic_machine=sparc-`echo "$basic_machine" | sed 's/-.*//'` ;; 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 + basic_machine=m68k-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=linux ;; 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]*) + *mint | mint[0-9]* | *MiNT | *MiNT[0-9]*) basic_machine=m68k-atari - os=-mint + os=mint ;; mips3*-*) - basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` + 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 - ;; - moxiebox) - basic_machine=moxie-unknown - os=-moxiebox - ;; - msdos) - basic_machine=i386-pc - os=-msdos + basic_machine=`echo "$basic_machine" | sed -e 's/mips3/mips64/'`-unknown ;; 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 - ;; - 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 + basic_machine=`echo "$basic_machine" | sed -e 's/ms1-/mt-/'` ;; news-3600 | risc-news) basic_machine=mips-sony - os=-newsos - ;; - necv70) - basic_machine=v70-nec - os=-sysv + os=newsos ;; next | m*-next) basic_machine=m68k-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 ;; @@ -946,43 +1118,26 @@ case $basic_machine in nsr-tandem) basic_machine=nsr-tandem ;; + nsv-tandem) + basic_machine=nsv-tandem + ;; nsx-tandem) basic_machine=nsx-tandem ;; op50n-* | op60c-*) basic_machine=hppa1.1-oki - os=-proelf + 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 - ;; pa-hitachi) basic_machine=hppa1.1-hitachi - os=-hiuxwe2 - ;; - paragon) - basic_machine=i860-intel - os=-osf - ;; - parisc) - basic_machine=hppa-unknown - os=-linux + os=hiuxwe2 ;; parisc-*) - basic_machine=hppa-`echo $basic_machine | sed 's/^[^-]*-//'` - os=-linux + basic_machine=hppa-`echo "$basic_machine" | sed 's/^[^-]*-//'` + os=linux ;; pbd) basic_machine=sparc-tti @@ -997,7 +1152,7 @@ case $basic_machine in basic_machine=i386-pc ;; pc98-*) - basic_machine=i386-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i386-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentium | p5 | k5 | k6 | nexgen | viac3) basic_machine=i586-pc @@ -1012,16 +1167,16 @@ case $basic_machine in basic_machine=i786-pc ;; pentium-* | p5-* | k5-* | k6-* | nexgen-* | viac3-*) - basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i586-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentiumpro-* | p6-* | 6x86-* | athlon-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentiumii-* | pentium2-* | pentiumiii-* | pentium3-*) - basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i686-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pentium4-*) - basic_machine=i786-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=i786-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; pn) basic_machine=pn-gould @@ -1031,43 +1186,27 @@ case $basic_machine in ppc | ppcbe) basic_machine=powerpc-unknown ;; ppc-* | ppcbe-*) - basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=powerpc-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle) basic_machine=powerpcle-unknown ;; ppcle-* | powerpclittle-*) - basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=powerpcle-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ppc64) basic_machine=powerpc64-unknown ;; - ppc64-*) basic_machine=powerpc64-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc64-*) basic_machine=powerpc64-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; ppc64le | powerpc64little) basic_machine=powerpc64le-unknown ;; ppc64le-* | powerpc64little-*) - basic_machine=powerpc64le-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=powerpc64le-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; 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 - ;; rm[46]00) basic_machine=mips-siemens ;; @@ -1080,10 +1219,6 @@ case $basic_machine in s390x | s390x-*) basic_machine=s390x-ibm ;; - sa29200) - basic_machine=a29k-amd - os=-udi - ;; sb1) basic_machine=mipsisa64sb1-unknown ;; @@ -1092,32 +1227,17 @@ case $basic_machine in ;; sde) basic_machine=mipsisa32-sde - os=-elf - ;; - sei) - basic_machine=mips-sei - os=-seiux + os=${os:-elf} ;; sequent) basic_machine=i386-sequent ;; - sh) - basic_machine=sh-hitachi - os=-hms - ;; sh5el) basic_machine=sh5le-unknown ;; - sh64) - basic_machine=sh64-unknown - ;; - sparclite-wrs | simso-wrs) + simso-wrs) basic_machine=sparclite-wrs - os=-vxworks - ;; - sps7) - basic_machine=m68k-bull - os=-sysv2 + os=vxworks ;; spur) basic_machine=spur-unknown @@ -1125,44 +1245,12 @@ case $basic_machine in st2000) basic_machine=m68k-tandem ;; - stratus) - basic_machine=i860-stratus - os=-sysv4 - ;; strongarm-* | thumb-*) - basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + basic_machine=arm-`echo "$basic_machine" | sed 's/^[^-]*-//'` ;; sun2) basic_machine=m68000-sun ;; - sun2os3) - basic_machine=m68000-sun - os=-sunos3 - ;; - sun2os4) - basic_machine=m68000-sun - os=-sunos4 - ;; - sun3os3) - basic_machine=m68k-sun - os=-sunos3 - ;; - sun3os4) - basic_machine=m68k-sun - os=-sunos4 - ;; - sun4os3) - basic_machine=sparc-sun - os=-sunos3 - ;; - sun4os4) - basic_machine=sparc-sun - os=-sunos4 - ;; - sun4sol2) - basic_machine=sparc-sun - os=-solaris2 - ;; sun3 | sun3-*) basic_machine=m68k-sun ;; @@ -1172,25 +1260,9 @@ case $basic_machine in sun386 | sun386i | roadrunner) basic_machine=i386-sun ;; - 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 - ;; tile*) basic_machine=$basic_machine-unknown - os=-linux-gnu + os=linux-gnu ;; tx39) basic_machine=mipstx39-unknown @@ -1198,91 +1270,32 @@ case $basic_machine in tx39el) basic_machine=mipstx39el-unknown ;; - toad1) - basic_machine=pdp10-xkl - os=-tops20 - ;; tower | tower-32) basic_machine=m68k-ncr ;; - 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 - ;; vpp*|vx|vx-*) basic_machine=f301-fujitsu ;; - vxworks960) - basic_machine=i960-wrs - os=-vxworks - ;; - vxworks68) - basic_machine=m68k-wrs - os=-vxworks - ;; - vxworks29k) - basic_machine=a29k-wrs - os=-vxworks - ;; - wasm32) - basic_machine=wasm32-unknown - ;; w65*) basic_machine=w65-wdc - os=-none + os=none ;; w89k-*) basic_machine=hppa1.1-winbond - os=-proelf + os=proelf ;; x64) basic_machine=x86_64-pc ;; - xbox) - basic_machine=i686-pc - os=-mingw32 - ;; xps | xps100) basic_machine=xps100-honeywell ;; xscale-* | xscalee[bl]-*) - basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` - ;; - ymp) - basic_machine=ymp-cray - os=-unicos - ;; - z8k-*-coff) - basic_machine=z8k-unknown - os=-sim - ;; - z80-*-coff) - basic_machine=z80-unknown - os=-sim + basic_machine=`echo "$basic_machine" | sed 's/^xscale/arm/'` ;; none) basic_machine=none-none - os=-none + os=${os:-none} ;; # Here we handle the default manufacturer of certain CPU types. It is in @@ -1308,10 +1321,6 @@ case $basic_machine in vax) basic_machine=vax-dec ;; - pdp10) - # there are many clones, so DEC is not a safe bet - basic_machine=pdp10-unknown - ;; pdp11) basic_machine=pdp11-dec ;; @@ -1321,9 +1330,6 @@ case $basic_machine in sh[1234] | sh[24]a | sh[24]aeb | sh[34]eb | sh[1234]le | sh[23]ele) basic_machine=sh-unknown ;; - sparc | sparcv8 | sparcv9 | sparcv9b | sparcv9v) - basic_machine=sparc-sun - ;; cydra) basic_machine=cydra-cydrome ;; @@ -1343,7 +1349,7 @@ case $basic_machine in # Make sure to match an already-canonicalized machine name. ;; *) - echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2 + echo Invalid configuration \`"$1"\': machine \`"$basic_machine"\' not recognized 1>&2 exit 1 ;; esac @@ -1351,10 +1357,10 @@ esac # Here we canonicalize certain aliases for manufacturers. case $basic_machine in *-digital*) - basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'` + basic_machine=`echo "$basic_machine" | sed 's/digital.*/dec/'` ;; *-commodore*) - basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'` + basic_machine=`echo "$basic_machine" | sed 's/commodore.*/cbm/'` ;; *) ;; @@ -1362,213 +1368,200 @@ 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 + # solaris* is a basic system type, with this one exception. + auroraux) + os=auroraux ;; - -solaris1 | -solaris1.*) + solaris1 | solaris1.*) os=`echo $os | sed -e 's|solaris1|sunos4|'` ;; - -solaris) - os=-solaris2 - ;; - -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|'` ;; + # es1800 is here to avoid being matched by es* (a different OS) + es1800*) + os=ose + ;; # 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* | -cloudabi* | -sortix* \ - | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ - | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ - | -hiux* | -386bsd* | -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* \ - | -chorusos* | -chorusrdb* | -cegcc* | -glidix* \ - | -cygwin* | -msys* | -pe* | -psos* | -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* | -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* \ - | -onefs* | -tirtos* | -phoenix* | -fuchsia* | -redox*) + # 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* | cloudabi* | sortix* \ + | nindy* | vxsim* | vxworks* | ebmon* | hms* | mvs* \ + | clix* | riscos* | uniplus* | iris* | rtu* | xenix* \ + | hiux* | 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* \ + | chorusos* | chorusrdb* | cegcc* | glidix* \ + | cygwin* | msys* | pe* | psos* | 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*) + qnx*) case $basic_machine in x86-* | i*86-*) ;; *) - os=-nto$os + os=nto-$os ;; esac ;; - -nto-qnx*) + nto-qnx*) ;; - -nto*) + nto*) os=`echo $os | sed -e 's|nto|nto-qnx|'` ;; - -sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \ - | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \ - | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*) + sim | xray | os68k* | v88r* \ + | windows* | osx | abug | netware* | os9* \ + | macos* | mpw* | magic* | mmixware* | mon960* | lnews*) ;; - -mac*) - os=`echo $os | sed -e 's|mac|macos|'` + mac*) + os=`echo "$os" | sed -e 's|mac|macos|'` ;; - -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|'` - ;; - -sunos6*) - os=`echo $os | sed -e 's|sunos6|solaris3|'` + sunos5*) + os=`echo "$os" | sed -e 's|sunos5|solaris2|'` ;; - -opened*) - os=-openedition + sunos6*) + os=`echo "$os" | sed -e 's|sunos6|solaris3|'` ;; - -os400*) - os=-os400 + opened*) + os=openedition ;; - -wince*) - os=-wince + os400*) + os=os400 ;; - -osfrose*) - os=-osfrose + wince*) + os=wince ;; - -osf*) - os=-osf + utek*) + os=bsd ;; - -utek*) - os=-bsd + dynix*) + os=bsd ;; - -dynix*) - os=-bsd + acis*) + os=aos ;; - -acis*) - os=-aos + atheos*) + os=atheos ;; - -atheos*) - os=-atheos + syllable*) + os=syllable ;; - -syllable*) - os=-syllable - ;; - -386bsd) - os=-bsd + 386bsd) + os=bsd ;; - -ctix* | -uts*) - os=-sysv + ctix* | uts*) + os=sysv ;; - -nova*) - os=-rtmk-nova + nova*) + os=rtmk-nova ;; - -ns2) - os=-nextstep2 + ns2) + os=nextstep2 ;; - -nsk*) - os=-nsk + 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 - ;; - -zvmoe) - os=-zvmoe - ;; - -dicos*) - os=-dicos - ;; - -pikeos*) + pikeos*) # Until real need of OS specific support for # particular features comes up, bare metal # configurations are quite functional. case $basic_machine in arm*) - os=-eabi + os=eabi ;; *) - os=-elf + os=elf ;; esac ;; - -nacl*) + nacl*) + ;; + ios) ;; - -ios) + 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 @@ -1586,179 +1579,173 @@ else case $basic_machine 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 ;; 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 + 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 ;; pru-*) - os=-elf + os=elf ;; *-be) - os=-beos - ;; - *-haiku) - os=-haiku + 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 + 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 ;; *) - os=-none + os=none ;; esac fi @@ -1769,79 +1756,79 @@ vendor=unknown case $basic_machine 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*) + 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/"` + basic_machine=`echo "$basic_machine" | sed "s/unknown/$vendor/"` ;; esac -echo $basic_machine$os +echo "$basic_machine-$os" exit # Local variables: -# eval: (add-hook 'write-file-functions 'time-stamp) +# eval: (add-hook 'before-save-hook 'time-stamp) # time-stamp-start: "timestamp='" # time-stamp-format: "%:y-%02m-%02d" # time-stamp-end: "'" diff --git a/support/man2html.c b/support/man2html.c index 6ba50616a..3ab105f32 100644 --- a/support/man2html.c +++ b/support/man2html.c @@ -1992,7 +1992,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; diff --git a/test.c b/test.c index 3da8c7b36..4cb3343cd 100644 --- a/test.c +++ b/test.c @@ -622,9 +622,8 @@ 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; int rtype, ret; @@ -634,7 +633,8 @@ unary_test (op, arg) 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] ]] */ @@ -647,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); diff --git a/tests/array.right b/tests/array.right index aab4153d0..3c465248b 100644 --- a/tests/array.right +++ b/tests/array.right @@ -621,3 +621,123 @@ arithmetic: 6.declare -A a=([" "]="13" [0]="0" [1]="1" ["\" \""]="11" ) 7.declare -A a=([" "]="13" [0]="0" [1]="1" ["\" \""]="11" ) 8.declare -A a=([" "]="13" [0]="0" [1]="1" ["\" \""]="13" ) +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] = +argv[4] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = diff --git a/tests/array.tests b/tests/array.tests index e045d5c4a..7fa1cdaf1 100644 --- a/tests/array.tests +++ b/tests/array.tests @@ -404,3 +404,4 @@ ${THIS_SH} ./array22.sub ${THIS_SH} ./array23.sub ${THIS_SH} ./array24.sub ${THIS_SH} ./array25.sub +${THIS_SH} ./array26.sub diff --git a/tests/array26.sub b/tests/array26.sub new file mode 100644 index 000000000..826774f76 --- /dev/null +++ b/tests/array26.sub @@ -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/assoc.right b/tests/assoc.right index e10636b2d..99143f006 100644 --- a/tests/assoc.right +++ b/tests/assoc.right @@ -220,3 +220,12 @@ declare -A a=(["80's"]="Depeche Mode" ) 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" diff --git a/tests/assoc.tests b/tests/assoc.tests index 24ab08c02..84326c9c6 100644 --- a/tests/assoc.tests +++ b/tests/assoc.tests @@ -217,3 +217,5 @@ ${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 index 000000000..9eef2cac8 --- /dev/null +++ b/tests/assoc10.sub @@ -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/histexp.right b/tests/histexp.right index bcf5dea68..9dc592cb6 100644 --- a/tests/histexp.right +++ b/tests/histexp.right @@ -203,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 diff --git a/tests/histexp.tests b/tests/histexp.tests index 2901064f2..5ae925e13 100644 --- a/tests/histexp.tests +++ b/tests/histexp.tests @@ -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 diff --git a/tests/histexp5.sub b/tests/histexp5.sub new file mode 100644 index 000000000..0fe62fe40 --- /dev/null +++ b/tests/histexp5.sub @@ -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 index 000000000..00610b078 --- /dev/null +++ b/tests/histexp6.sub @@ -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 diff --git a/tests/intl.right b/tests/intl.right index 006318e59..7da99192d 100644 --- a/tests/intl.right +++ b/tests/intl.right @@ -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 diff --git a/tests/nameref.right b/tests/nameref.right index 2ab62b094..698002ec8 100644 --- a/tests/nameref.right +++ b/tests/nameref.right @@ -440,3 +440,46 @@ declare -n foo="bar" declare -- bar declare -- foo="bar" declare -- bar +declare -a v=([0]="Y") +r: +v: +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" diff --git a/tests/nameref20.sub b/tests/nameref20.sub new file mode 100644 index 000000000..1e6faec9d --- /dev/null +++ b/tests/nameref20.sub @@ -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 index 000000000..a555a0845 --- /dev/null +++ b/tests/nameref21.sub @@ -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 + diff --git a/tests/nquote1.right b/tests/nquote1.right index 26e16b918..45389ef39 100644 --- a/tests/nquote1.right +++ b/tests/nquote1.right @@ -119,3 +119,13 @@ argv[3] = argv[1] = <@2> argv[2] = argv[3] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[1] = +argv[2] = +argv[3] = +argv[1] = +argv[2] = +argv[3] = diff --git a/tests/nquote1.tests b/tests/nquote1.tests index 0970e77c1..f47ab54eb 100644 --- a/tests/nquote1.tests +++ b/tests/nquote1.tests @@ -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}" diff --git a/tests/posixexp.right b/tests/posixexp.right index 1e81eadb8..53a08e3b6 100644 --- a/tests/posixexp.right +++ b/tests/posixexp.right @@ -275,5 +275,9 @@ argv[2] = [ abc def ghi jkl / abc def ghi jkl ] [ abc def ghi jkl ] [ abc def ghi jkl / abc def ghi jkl / abc def ghi jkl ] -./posixexp.tests: line 82: unexpected EOF while looking for matching `}' -./posixexp.tests: line 83: syntax error: unexpected end of file +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 diff --git a/tests/posixexp.tests b/tests/posixexp.tests index 76dfede9a..3368711fb 100644 --- a/tests/posixexp.tests +++ b/tests/posixexp.tests @@ -76,6 +76,7 @@ ${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 diff --git a/tests/posixexp5.sub b/tests/posixexp5.sub index cceeb00c4..e477bbb1e 100644 --- a/tests/posixexp5.sub +++ b/tests/posixexp5.sub @@ -7,7 +7,7 @@ teststring=$(printf '\1\2\3\177') n=0 trim_od() { - od -a | sed -n '1 { s/^0*[[:blank:]]*//; s/[[:blank:]]*$//; p; }' + od -t a | sed -n '1 { s/^0*[[:blank:]]*//; s/[[:blank:]]*$//; p; }' } doTest() { diff --git a/tests/posixexp7.sub b/tests/posixexp7.sub new file mode 100644 index 000000000..2e230cf85 --- /dev/null +++ b/tests/posixexp7.sub @@ -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 < +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] = <> diff --git a/tests/quote.tests b/tests/quote.tests index 57ee7e58f..d7f13cd0c 100644 --- a/tests/quote.tests +++ b/tests/quote.tests @@ -121,3 +121,4 @@ echo "${foo:-string \\}" echo ${foo:-string \\\}} ${THIS_SH} ./quote1.sub +${THIS_SH} ./quote2.sub diff --git a/tests/quote2.sub b/tests/quote2.sub new file mode 100644 index 000000000..7deb4cfa4 --- /dev/null +++ b/tests/quote2.sub @@ -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:+ "`:`""`:`"""} diff --git a/tests/redir.right b/tests/redir.right index ab737d494..75ed45551 100644 --- a/tests/redir.right +++ b/tests/redir.right @@ -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 diff --git a/tests/redir.tests b/tests/redir.tests index 7b74ac53d..6af021948 100644 --- a/tests/redir.tests +++ b/tests/redir.tests @@ -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 # diff --git a/tests/run-varenv b/tests/run-varenv index 5987a7f3e..f147d70bf 100644 --- a/tests/run-varenv +++ b/tests/run-varenv @@ -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} diff --git a/tests/shopt.right b/tests/shopt.right index bb0ac6961..64c718c8d 100644 --- a/tests/shopt.right +++ b/tests/shopt.right @@ -27,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 @@ -63,6 +63,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 @@ -89,7 +90,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 @@ -130,7 +130,6 @@ execfail off extdebug off extglob off failglob off -globasciiranges off globstar off gnu_errfmt off histappend off diff --git a/tests/test-glue-functions b/tests/test-glue-functions index b958ab71c..07ad8215f 100644 --- a/tests/test-glue-functions +++ b/tests/test-glue-functions @@ -9,5 +9,5 @@ _intl_normalize_spaces() # avoid whitespace differences in wc implementations _cut_leading_spaces() { - sed -e 's/^[[:space:]]*//g' + sed -e 's/^[ ]*//g' } diff --git a/tests/unicode3.sub b/tests/unicode3.sub index b39f1d3ca..cb1b87328 100644 --- a/tests/unicode3.sub +++ b/tests/unicode3.sub @@ -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 diff --git a/tests/varenv.right b/tests/varenv.right index 7ca5f6612..4e8c0d167 100644 --- a/tests/varenv.right +++ b/tests/varenv.right @@ -145,8 +145,68 @@ 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= 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 index 000000000..34b855963 --- /dev/null +++ b/tests/varenv.tests @@ -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/varenv12.sub b/tests/varenv12.sub index 6aaf512b5..edba3c946 100644 --- a/tests/varenv12.sub +++ b/tests/varenv12.sub @@ -47,6 +47,28 @@ 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 @@ -60,3 +82,19 @@ 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-}" + 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 index 000000000..0e6a42c13 --- /dev/null +++ b/tests/varenv13.sub @@ -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 index 000000000..52b20d816 --- /dev/null +++ b/tests/varenv14.sub @@ -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 index 000000000..e635b12a3 --- /dev/null +++ b/tests/varenv15.in @@ -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 index 000000000..52c8a9405 --- /dev/null +++ b/tests/varenv15.sub @@ -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/variables.c b/variables.c index 79a900716..00872d647 100644 --- a/variables.c +++ b/variables.c @@ -110,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. */ @@ -229,7 +231,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 *)); @@ -245,6 +249,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 *)); @@ -391,7 +399,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; @@ -432,17 +440,24 @@ initialize_shell_variables (env, privmode) 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] = '='; @@ -1652,6 +1667,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; @@ -1777,6 +1813,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)); } @@ -1877,8 +1918,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); @@ -2226,6 +2267,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) @@ -2438,6 +2509,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) @@ -2672,13 +2779,31 @@ make_local_array_variable (name, assoc_ok) ARRAY *array; 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; } @@ -2699,20 +2824,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, 0); /* XXX for now */ - if (var == 0 || assoc_p (var)) + /* 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; } @@ -2911,7 +3055,12 @@ 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)) @@ -3124,6 +3273,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 @@ -3374,6 +3534,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) { @@ -4741,7 +4907,7 @@ maybe_make_export_env () { register char **temp_array; int new_size; - VAR_CONTEXT *tcxt; + VAR_CONTEXT *tcxt, *icxt; if (array_needs_making) { @@ -4753,7 +4919,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; @@ -4774,11 +4940,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); @@ -4893,13 +5071,14 @@ push_var_context (name, flags, tempvars) /* 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. */ - posix_func_behavior = posixly_correct; /* placeholder for later */ + special builtins, and do not persist in the current shell environment. + This is austin group interp #654, though nobody implements it yet. */ + posix_func_behavior = posixly_correct; vc = new_var_context (name, flags); /* Posix interp 1009, temporary assignments preceding function calls modify the current environment *before* the command is executed. */ - if (posix_func_behavior && tempvars == temporary_env) + if (posix_func_behavior && (flags & VC_FUNCENV) && tempvars == temporary_env) merge_temporary_env (); else if (tempvars) { @@ -4923,24 +5102,25 @@ push_var_context (name, flags, tempvars) calls to the surrounding scope. It takes variables out of a temporary environment hash table. We take the - variable in data + variable in data. */ static void push_func_var (data) PTR_T data; { SHELL_VAR *var, *v; - int posix_func_behavior; + int posix_var_behavior; var = (SHELL_VAR *)data; /* 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. */ - posix_func_behavior = posixly_correct; /* placeholder for later */ + special builtins, and do not persist in the current shell environment. + This is austin group interp #654, though nobody implements it yet. */ + posix_var_behavior = posixly_correct; if (local_p (var) && STREQ (var->name, "-")) set_current_options (value_cell (var)); - else if (tempvar_p (var) && (posix_func_behavior || (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 @@ -5110,10 +5290,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) @@ -5145,35 +5379,53 @@ 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 diff --git a/variables.h b/variables.h index bc1546d16..2f6e35468 100644 --- a/variables.h +++ b/variables.h @@ -251,6 +251,9 @@ 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)); @@ -278,6 +281,7 @@ 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 *, int)); extern SHELL_VAR *bind_variable __P((const char *, char *, int)); @@ -380,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)); diff --git a/y.tab.c b/y.tab.c index d894bf604..864198340 100644 --- a/y.tab.c +++ b/y.tab.c @@ -4703,20 +4703,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) { @@ -5456,6 +5457,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 -- 2.47.2